您好、欢迎来到现金彩票网!
当前位置:ag视讯 > 构件存储库 >

设计模式总结

发布时间:2019-07-21 04:03 来源:未知 编辑:admin

  创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

  结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

  行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  里氏替换原则:只要父类出现的地方子类就可以出现,且替换成子类也不会出现任何错误或者异常

  接口隔离原则:不要建立臃肿庞大的接口。即接口尽量细化,同时接口中的方法尽量少

  迪米特法则:一个对象应该对其他对象有最少的了解,也就是说一个类要对自己需要耦合或者调用的类知道的最少

  ● 在整个项目中需要一个共享访问点或共享数据,例如一个Web页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的;

  ● 需要定义大量的静态常量和静态方法(如工具类)的环境,可以采用单例模式(当然,也可以直接声明为static的方式)。

  定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

  Product为抽象产品类,负责定义产品的共性,实现对事物最抽象的定义;

  Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。

  每个人种(具体的产品类)都对应了一个创建者,每个创建者独立负责创建对应的产品对象,非常符合单一职责原则

  单例模式的核心要求就是在内存中只有一个对象,通过工厂方法模式也可以只在内存中生产一个对象

  ProductFactory负责产品类对象的创建工作,并且通过prMap变量产生一个缓存,对需要再次被重用的对象保留

  定义:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。

  定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

  可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑。

  注意:为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写。

  具体模板:ConcreteClass1和ConcreteClass2属于具体模板,实现父类所定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现

  ● 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。

  ● 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。

  定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  通常是实现了模板方法模式,也就是有模板方法和基本方法,例子中的BenzModel和BMWModel就属于产品类。

  规范产品的组建,一般是由子类实现。例子中的CarBuilder就属于抽象建造者。

  实现抽象类定义的所有方法,并且返回一个组建好的对象。例子中的BenzBuilder和BMWBuilder就属于具体建造者。

  ● 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。

  ● 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。

  ● 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。

  建造者模式最主要的功能是基本方法的调用顺序安排,这些基本方法已经实现了,顺序不同产生的对象也不同;

  抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。

  也叫做委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。

  普通代理就是我们要知道代理的存在,也就是类似的GamePlayerProxy这个类的存在,然后才能访问;

  强制代理则是调用者直接调用真实角色,而不用关心代理是否存在,其代理的产生是由真实角色决定的。

  在该模式下,调用者只知代理而不用知道真实的角色是谁,屏蔽了真实角色的变更对高层模块的影响,真实的主题角色想怎么修改就怎么修改,对高层次的模块没有任何的影响,只要你实现了接口所对应的方法,该模式非常适合对扩展性要求较高的场合。

  强制代理的概念就是要从真实角色查找到代理角色,不允许直接访问真实角色。高层模块只要调用getProxy就可以访问真实角色的所有方法,它根本就不需要产生一个代理出来,代理的管理已经由真实角色自己完成。

  根据被代理的接口生成所有的方法,也就是说给定一个接口,动态代理会宣称“我已经实现该接口下的所有方法了”。

  两条独立发展的线路。动态代理实现代理的职责,业务逻辑Subject实现相关的逻辑功能,两者之间没有必然的相互耦合的关系。通知Advice从另一个切面切入,最终在高层模块也就是Client进行耦合,完成逻辑的封装任务。

  动态代理的意图:横切面编程,在不改变我们已有代码结构的情况下增强或控制对象的行为。

  原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。

  通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。

  一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。

  浅拷贝:Object类提供的方法clone只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向原生对象的内部元素地址,这种拷贝就叫做浅拷贝,其他的原始类型比如int、long、char、string(当做是原始类型)等都会被拷贝。

  注意:使用原型模式时,引用的成员变量必须满足两个条件才不会被拷贝:一是类的成员变量,而不是方法内变量;二是必须是一个可变的引用对象,而不是一个原始类型或不可变对象。

  定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

  具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。

  每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状态,处理自己的行为等,这种行为叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依赖;第二种是必须依赖中介者才能完成的行为,叫做依赖方法(Dep-Method)。

  ps:使用同事类注入而不使用抽象注入的原因是因为抽象类中不具有每个同事类必须要完成的方法。即每个同事类中的方法各不相同。

  问:为什么同事类要使用构造函数注入中介者,而中介者使用getter/setter方式注入同事类呢?

  中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状结构,即每个类都与其他的类有直接的联系。

  定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

  该角色就是干活的角色,命令传递到这里是应该被执行的,具体到我们上面的例子中就是Group的三个实现类(需求组,美工组,代码组)。

  认为是命令的地方就可以采用命令模式,例如,在GUI开发中,一个按钮的点击是一个命令,可以采用命令模式;模拟DOS命令的时候,当然也要采用命令模式;触发-反馈机制的处理等。

  定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

  一是定义一个请求的处理方法handleMessage,唯一对外开放的方法;

  三是定义了具体的请求者必须实现的两个方法:定义自己能够处理的级别getHandlerLevel和具体的处理任务echo。

  链中节点数量需要控制,避免出现超长链的情况,一般的做法是在Handler中设置一个最大节点数量,在setNext方法中判断是否已经是超过其阈值,超过则不允许该链建立,避免无意识地破坏系统性能。

  定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。

  Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象,如上面的成绩单。

  注意:在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象类充当Component抽象构件。

  ConcreteComponent是最核心、最原始、最基本的接口或抽象类的实现,你要装饰的就是它。

  一般是一个抽象类,做什么用呢?实现接口或者抽象方法,它里面可不一定有抽象的方法呀,在它的属性里必然有一个private变量指向Component抽象构件。

  ConcreteDecoratorA和ConcreteDecoratorB是两个具体的装饰类,你要把你最核心的、最原始的、最基本的东西装饰成其他东西,上面的例子就是把一个比较平庸的成绩单装饰成家长认可的成绩单。

  它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。

  策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。各位看官可能要问了,类图中的AlgorithmInterface是什么意思,嘿嘿,algorithm是“运算法则”的意思,结合起来意思就明白了吧。

  受枚举类型的限制,每个枚举项都是public、final、static的,扩展性受到了一定的约束,因此在系统开发中,策略枚举一般担当不经常发生变化的角色。

  该角色定义把其他类转换为何种接口,也就是我们的期望接口,例子中的IUserInfo接口就是目标角色。

  你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。

  适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,它的职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或是类关联的方式。

  你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式,这也是我们例子中提到的。

  类适配器是类间继承,对象适配器是对象的合成关系,也可以说是类的关联关系,这是两者的根本区别。(实际项目中对象适配器使用到的场景相对比较多)。

  定义:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。

  抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()是否已经访问到底部(Java叫做hasNext()方法)。

  容器角色负责提供创建具体迭代器角色的接口,必然提供一个类似createIterator()这样的方法,在Java中一般是iterator()方法。

  ps:迭代器模式已经被淘汰,java中已经把迭代器运用到各个聚集类(collection)中了,使用java自带的迭代器就已经满足我们的需求了。

  定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

  定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性,比如我们例子中的getInfo就封装到了抽象类中。

  定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。

  定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。

  观察者接收到消息后,即进行update(更新方法)操作,对接收到的信息进行处理。

  ● 关联行为场景。需要注意的是,关联行为是可拆分的,而不是“组合”关系。

  在一个观察者模式中最多出现一个对象既是观察者也是被观察者,也就是说消息最多转发一次(传递两次)。

  观察者比较多,而且处理时间比较长,采用异步处理来考虑线程安全和队列的问题。

  定义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

  客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类。

  可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不知道门面的存在。对于子系统而言,门面仅仅是另外一个客户端而已。

  定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

  记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。

  负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。

  ●增加了一个BeanUtils类,其中backupProp是把发起人的所有属性值转换到HashMap中,方便备忘录角色存储。restoreProp方法则是把HashMap中的值返回到发起人角色中。

  ● 建立一个空接口IMemento——什么方法属性都没有的接口,然后在发起人Originator类中建立一个内置类(也叫做类中类)Memento实现IMemento接口,同时也实现自己的业务逻辑。

  定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

  抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。

  接口或者抽象类,声明接受哪一类访问者访问,程序上是通过accept方法中的参数来定义的。

  元素产生者,一般容纳在多个不同类、不同接口的容器,如List、Set、Map等,在项目中,一般很少抽象出这个角色。

  ● 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就说是用迭代器模式已经不能胜任的情景。

  ● 需要对一个对象结构中的对象进行很多不同并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。

  定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。

  每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。

  这也是状态模式的根本出发点,例如权限设计,人员的状态不同即使执行相同的行为结果也会不同,在这种情况下需要考虑使用状态模式。

  状态模式适用于当某个对象在它的状态发生改变时,它的行为也随着发生比较大的变化,也就是说在行为受状态约束的情况下可以使用状态模式,而且使用时对象的状态最好不要超过5个。

  定义:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

  实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。具体到我们例子就是VarExpression类,表达式中的每个终结符都在栈中产生了一个VarExpression对象。

  文法中的每条规则对应于一个非终结表达式,具体到我们的例子就是加减法规则分别对应到AddExpression和SubExpression两个类。非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则都对应一个非终结符表达式。

  尽量不要在重要的模块中使用解释器模式,否则维护会是一个很大的问题。在项目中可以使用shell、JRuby、Groovy等脚本语言来代替解释器模式,弥补Java编译型语言的不足。

  对象的信息分为两个部分:内部状态(intrinsic)与外部状态(extrinsic)。

  内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随环境改变而改变。

  外部状态是对象得以依赖的一个标记,是随环境改变而改变的、不可以共享的状态。

  它简单地说就是一个产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现。

  具体的一个产品类,实现抽象角色定义的业务。该角色中需要注意的是内部状态处理应该与环境无关,不应该出现一个操作改变了内部状态,同时修改了外部状态,这是绝对不允许的。

  不存在外部状态或者安全要求(如线程安全)不能够使用共享技术的对象,该对象一般不会出现在享元工厂中。

  ● 细粒度的对象都具备较接近的外部状态,而且内部状态与环境无关,也就是说对象没有特定身份。

  ●享元模式是线程不安全的,只有依靠经验,在需要的地方考虑一下线程安全,在大部分场景下不用考虑。对象池中的享元对象尽量多,多到足够满足为止。

  ● 性能安全:外部状态最好以java的基本类型作为标志,如String,int,可以提高效率。

  它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。

  注意:发现类的继承有N层时,可以考虑使用桥梁模式。桥梁模式主要考虑如何拆分抽象和实现。

  引言:好的设计和代码可以拥抱变化,当你的程序经过多个版本的迭代后仍然代码清晰、灵活和系统稳定,这就是理想的状况。源码:博文来自:nihao_pcm的博客

  设计模式创建型模式创建型模式创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是new一个对象,然后set相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种...博文来自:黄小斜

  1.单一职责原则(SingleResponsibilityPrinciple)目的:降低代码复杂度、系统解耦合、提高可读性含义:对于一个类,只有一个引起该类变化的原因;该类的职责是唯一的,且这个职责是...博文来自:JimmySpace

  1.策略模式定义了算法簇,进行封装,他们之间可以相互替换实现:接口类来实现算法簇;可以用类的继承或者抽象类的继承来实现个体2.观察者模式手动实现:两个接口subject:registerObserve...博文来自:Vtamins的博客

  掌握常用的几种(最起码单例模式、工厂模式),了解其他的设计模式即可,做到手里有粮,心里不慌。首先,掌握每种模式的定义及使用场景。其次,掌握一个形象的例子,简单的过一遍代码。学习设计模式的真正目的:编程...博文来自:的博客

  设计模式的定义:设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。工厂模式总结:大概流...博文来自:hym740639005的博客

  说起来看设计模式相关的书和文章其实有段时间了,从去年十月份左右就慢慢的在找文章看,但是始终没有找到那种感觉。最近这段时间在思考公司系统的重构,也去想重构中可以用哪些设计模式,慢慢得对设计模式开始有一点...博文来自:行词的博客

  最近看了点设计模式,以前就听说各种设计模式看了以后会觉得他们非常像,别说还真是,看到现在也是感觉脑子一团浆糊,真是觉得各种模式很像,比如说适配器模式和代理模式,都是持有目标对象然后去调用他们的方法,中...博文

  对上一篇的设计模式总结。个人见解不喜勿喷一、策略模式和模板方法模式Strategy模式允许外界使用其接口方法,因而可以将这个接口方法认为是一整个算法;TemplateMetho...博文来自:PanZiHao_BeiJing的博客

  MVP模式的介绍简单介绍Android中的设计模式很多,MVP是目前比较流行的一种设计模式,全称为Model-View-Presenter。MVP模式能有效地降低View的复杂性,避免业务逻辑被塞入V...博文来自:github_39998545的博客

  简单工厂模式:提供参数,根据形参返回具体子类的实例,而返回类型是父类,这个过程利用了多态。策略模式:构造器形参是父类,而传入的是子类,父类调用方法A等价于调用子类的方法A。开放-封闭原则:对类的实现,...博文来自:VimGuy的博客

  本文是通过阅读《HeadFirst设计模式》和相关博客()加上自己体会写成。一、设计模式简介设计模式(Designpattern)代表了...博文来自:只愿不违本心的博客

  小小的需求有这么一个需求,完成一个表单验证的功能,仅需验证用户名、邮箱、密码。看到这里微微一笑,写出如下代码:functioncheckName(){//验证姓名}functioncheckEmail...博文来自:yu_kaimin的博客

  目录 1.单例模式2.抽象工厂模式3.工厂方法模式4.建造者模式5.原型模式6.适配器模式7.装饰器模式8.代理模式9.外观模式10.桥接模式11.组合模式12.享元模式13.策略模式14.模板方法...博文来自:李疆的博客

  GOF23设计模式总结一、GOF23中设计模式一览表二、构建型模式单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。工厂模式简单工厂模式:用来生产同一等级结构中的任意产品。(对于增加...博文来自:职业炮灰的博客

  Spring中常用的设计模式总结之前写的几篇设计模式总结,其实主要是为了阅读spring源码服务的,这里对之前的一些设计模式来一个简单的总结1、单例模式总结的博文如下:单例模式总结单例模式,主要目的是...博文来自:liman65727的专栏

  前言说到迭代器,所有的Java开发者都不陌生,例如HashSet,当我们需要遍历HashSet的时候,通过iterator不停的next就可以循环遍历集合中的所有元素。但是这么做到底有什么好处呢?1、...博文来自:珠穆朗玛小王子的博客

  #dp_android《Android源码设计模式解析与实战》学习总结及部分示例代码,感谢作者。书中源代码地址:博文来自:carlshen的专栏

  为了方便记忆设计模式,我尝试用一句话来对每一种设计模式作一个简要概述,详情会以代码的形式展示1创建型模式(不再使用new创建对象):两工一单一建一原型简单工厂模式:创建一个Factory类,内部创建一...博文来自:jiayuqicz的博客

  版权声明:转载必须注明本文转自晓_晨的博客:在学习完设计模式后,LZ想告诉大家:...博文来自:晓晨的博客

  1.      外观模式定义:为子系统中的一组接口提供一个一致的的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Façade类的形式: Façade接口的形式: ...博文来自:liwenjun00的博客

  虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇...博文来自:温柔常伴

  通过《大话设计模式》初步了解了设计模式的一些概念,这是一个从面相过程到面相对象的思想转换,为以后的面向对象编程带来了从思想根源上的改变,很多模式看的令人兴奋,原来程序还可以这样写。不同的模式带来不同的...博文来自:那么多的人,你要去哪里

  原型=拷贝+简单成员桥接创建者=抽象工厂+模板命令=桥接+适配器桥接+自桥接=装饰装饰+链表=组合迭代+桥接=观察者桥接+自连接=职责链...博文来自:xie__jin__cheng的博客

  文章目录前言两个原则开闭原则前言以前学习js的时候了解过设计模式,觉得是很神奇的事情,就好比武侠小说中的各种招式,可以拿来对付代码中的各种问题最近又看教程和书籍重新温习了一遍,脑海中很清晰的有了关于设...博文来自:超胆孤侠

  设计模式总结创建型模式核心作用:用来帮助我们创建对象。1.单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 通俗易懂:就像你有件事每天都要做,你可以让你的秘书帮你做,你可以让他每天都...博文来自:Mr.Cao

  此篇博客为阅读大话设计模式后的笔记记录(读完本文≈读完《大话设计模式》),注意是笔记形式,优先适合于对设计模式有一定了解的读者,希望短时间快速温习的读者,同时也对所有设计模式添加了完整代码诠释...博文来自:张花生的博客

  单一职责SRP(SingleResponsibilityPrinciple)即就一个类而言只有一个引起他变化的原因;简单的来说一个类是由一组相关性很高的方法和属性的集合;例如:下面录音和播放的代码im...博文来自:的博客

  对于开发工作者的世界,不管是开发讨论会上还是学习交流会上,更或者面试的时候,当提及设计模式,都会或多或少的让别人高看你一眼。为什么它会有这么强大的魅力呢!...博文来自:爱测未来团队博客

  主要介绍了什么是设计模式、设计模式的种类、设计模式的学习笔记、大话设计模式的讲解、有关程序员编程的成长记以及其他有关设计模式的资料

  定义策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。Strategy模式典型的结构图为:大家肯定看着很懵逼,其实第一次接触类图的时候我自己也是这样...

http://nzrimfire.com/goujiancunchuku/447.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有