设计模式

Posted by Kaka Blog on November 8, 2018

创建型模式

负责对象的创建工作。

1.单例模式

该类负责创建自己的对象,同时确保只有单个对象被创建。保证一个类仅有一个实例,并提供一个访问它的全局访问点。

2.工厂模式

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

3.抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。接口是负责创建一个相关对象的工厂。

4.原型模式

实现了一个原型接口,该接口用于创建当前对象的克隆。

5.建造者模式

使用多个简单的对象一步一步构建成一个复杂的对象。

结构型模式

负责处理类或对象之间的关系。

1.适配器模式

将一个类的接口转换成客户希望的另外一个接口。

2.桥接模式

将抽象部分与实现部分分离,使它们都可以独立的变化。在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

如何判断:抽象类持有实现类的接口引用。

3.享元模式

运用共享技术有效地支持大量细粒度的对象。

4.组合模式

用于把一组相似的对象当作一个单一的对象。

5.外观模式

为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

如何判断:外观对象持有其它实体对象的实例。

6.代理模式

一个类代表另一个类的功能。

如何判断:代理对象和被代理对象实现同一个接口,代理对象持有对被代理对象的实例。

7.装饰者模式

允许向一个现有的对象添加新的功能,同时又不改变其结构。

如何判断:装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象接口的引用。

行为型模式

对类或对象如何交互以及为类和对象分配具体职责进行描述。

1.责任链模式

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

2.命令模式

请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

3.解释器模式

实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

4.迭代器模式

用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

5.中介者模式

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

6.备忘录模式

保存一个对象的某个状态,以便在适当的时候恢复对象。

7.观察者模式

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

如何判断:抽象类持有一个ArrayList对象实例,ArrayList对象实例持有抽象类的引用。

8.状态模式

我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

9.策略模式

创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。

10.模板模式

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

11.访问者模式

我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。

如何判断:被访问者持有访问者接口引用,访问者接口持有被访问者对象实例。

参考

设计模式-菜鸟教程 设计模式之桥接模式(Bridge Pattern)