设计模式

六大原则:

开闭(扩展而不修改),单一职责(只有一个原因改变类的状态),最少知道(减少耦合),替换(父子继承,子类可替换父类),依赖倒转(依赖抽象),接口隔离(最小接口)

1.策略模式,主要用于解决有多种数据类型或者角色需要以不同的逻辑处理,为每一种类型(角色)绑定自己匹配的逻辑方法,当有新增的类型和处理逻辑时,只需要简单的新增,并绑定就可以,不需要对原有的代码做修改。

2.工厂模式,通过传入的参数,定制的初始化不同的子类实例。

3.代理模式,代理者和被代理者通过实现相同的接口来保持相同的性质,为代理者设置不同的被代理者,可以灵活的变化接口逻辑。

4.单例(多例)模式。。。

5.抽象工厂模式,相对于简单工厂模式,由于需要创建的对象有更多的性质,简单模式无法满足多种类型的制造,所以将通用的创建方法抽象出来,由子类工厂实现具体的制造逻辑(感觉可以和模板方法模式结合)。

6.门面模式,将复杂的处理过程分装在一个执行类中,提供给外界单一的接口,调用者不必关心细节,扩展(修改)过程也会比较方便,用到的原则:“最少知道”,“开闭”

7.适配器模式,初始的开发阶段一般不会应用到该模式,在后续的功能扩展(或接入其他的服务、数据),存在参数格式或者接口不匹配的时候,相当于加一个中间层,来适配两者

8.模板方法模式,一般存在于有继承关系的场景中,模板方法,即可以通用的接口,在抽象类中定义通用的方法(调用抽象方法的顺序),而在子类中各自实现抽象方法的逻辑,基于最少知道原则,可以将抽象方法设为protect

9.建造者模式,相对于简单工厂模式,建造者适用于更复杂的对象的创建中,将组件的创建和组装分离分为builder和director,而工厂模式封装了全部的创建过程

10.桥梁模式

存在一种场景,一种类型中,整体的逻辑不变,但是其中的性质(业务类型)会变化,所以把两者分开,将变化的东西抽象出来,按需求组合。否则,每一种性质都整体生成新的类,维护困难。

11.命令模式

主要有命令类,执行类,为外界封装了需要的命令,调用者不需要知道操作的细节,涉及开闭原则,最少知道,单一职责,接口隔离,替换,依赖倒转

12.装饰模式

通过组合方式,避免了单用继承产生的强关联缺点,分为装饰类和核心业务类,装饰类继承了核心类的抽象接口,又通过组合方式持有核心实现类(核心业务类),可以灵活的装饰不同的装饰类,搭配成不同的处理逻辑,涉及开闭,依赖倒转,组合复用,单一职责,里式替换

13.迭代模式

java.lang包的集合类中有广泛的使用,通过一个迭代类去访问整个数据结构,最少知道原则

14.组合模式

应用于树状结构的初始化中,分为composite和leaf类型,抽象出info等共有的接口和composite(branch)特有的接口,单一职责,接口隔离,里式替换。。。

15.观察者模式,观察者和被观察者,被观察者持有观察者对列(listener),当被观察者执行相关的方法时触发响应的listener(考虑当观察者很多时异步化)

16.责任链模式,链式,串行处理

17.访问者模式,不同的访问者,获取被访问者不同的内容

18.状态模式,状态机和状态抽象,

19.原型模式,通过原型clone,用于new时需要更大的代价(如io,网络,磁盘)

20.中介者模式,当多个类之间相互紧密耦合,添加中介者解开类之间的耦合,使类都只依赖于中介者,会导致中介者逻辑复杂,相对更庞大。

21.解释器模式,java就有解释运行模式,类似的性质

22.享元模式,减少细粒度的实例(当存在很多区别很小的实例时),抽象出相同的性质

23.备忘录模式

你可能感兴趣的:(设计模式)