总体来说设计模式分为三大类:
创建型模式,共五种:
1.工厂方法模式(Factory Method):凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。
2.抽象工厂模式(Abstract Factory):是工厂方法模式的进一步抽象,为创建一组相关或相互依赖的对象提供一个借口,无需指定它们的具体类。是工厂方法模式的进一步抽象
3.单例模式(Singleton):在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。
4.建造者模式(Builder):将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
5.原型模式(Prototype):复制一个已经存在的实例来返回新的实例,被复制的实例就是我们所称的原型,这个原型是可定制的.
结构型模式,共七种:
1.适配器模式(Adapter):把一个类的接口变换成客户端所期待的另一种接口
2.装饰器模式(Decorator):以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
3.代理模式(Proxy):给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
4.外观模式(Facade):是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行
5.桥接模式(Bridge):将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化
6.组合模式(Composite):将对象组合成树形结构以表示“部分整体”的层次结构。使得用户对单个对象和使用具有一致性。
7.享元模式(Flyweight):以共享的方式高效地支持大量的细粒度对象。
行为型模式,共十一种:
1.策略模式(strategy):针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。
2.模板方法模式(Template Method):将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
3.观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
4.迭代子模式(Iterator):可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象
5.责任链模式(Chain of Responsibility):在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
6.命令模式(Command):把一个请求或者操作封装到一个对象中。允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
7.备忘录模式(Memento):在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
8.状态模式(State):允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
9.访问者模式(Visitor):封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。
10.中介者模式(Mediator):包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
11.解释器模式(Interpreter):给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。
还有两类:
并发型模式
线程池模式
用一个图片来整体描述一下: