创建型模式
简单工厂 Simple factory
- 定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。
- 功能:对象创建
- 本质:选择实现
工厂方法 Factory method
- 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。
- 功能:
- 让父类在不知道具体实现的情况向下,完成自身的功能调用
- 具体的实现延迟到子类来实现
- 本质:延迟到子类来选择实现。
- 应用:IoC/DI
抽象工厂 Abstract factory
- 定义:提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。
- 功能:为一系列相关对象或相互依赖的对象创建一个接口
- 本质:选择产品簇的实现
生成器 Builder
- 定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。
- 功能:分步骤地、细化地构建复杂的产品,即一步一步解决构造复杂对象的问题。
- 本质:分离整体构建算法和部件构造。
原型 Prototype
- 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
- 功能:通过克隆来创建新的对象实例,并复制原型属性的值。
- 本质:克隆生成对象。
单例 Singleton
- 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 功能:创建并提供一个全局唯一的对象实例。
- 本质:控制实例数目。
结构型模式
适配器 Adapter
- 定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 功能&本质:复用已有功能,转换匹配。
桥接 Bridge
- 定义:将抽象部分和它的实现部分分离,使它们都可以独立地变化。
- 功能:连接抽象部分和实现部分,实现互相通信和使用,减少类数目,提高类复用。
- 本质:分离抽象与实现
组合 Composite
- 定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
- 功能:以一个统一的方式来操作组合对象和叶子对象
- 本质:统一叶子对象和组合对象
装饰 Decorator
- 定义:动态地给一个对象增加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。
- 功能:通过增加不同的装饰器灵活地改变一个对象的功能
- 本质:动态组合
外观 Facade
- 定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
- 功能:让外部减少与子系统内多个模块的交互,松散耦合,从而让外部更简单地使用子系统。
- 本质:封装交互,简化调用。
享元 Flyweight
- 定义:运用共享技术有效地支持大量细粒度的对象。
- 功能:通过共享不变的部分,达到减少对象数量并节约内存的目的。
- 本质:分离与共享
代理 Proxy
- 定义:为其他对象提供一种代理以控制对这个对象的访问。
- 功能:通过创建一个代理对象代表真实的对象去操作。
- 本质:控制对象访问。
行为模式
职责链 Chain of responsibility
- 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
- 功能:用来处理“有多个对象都有机会处理某一特定请求,并对该特定请求进行封装”。
- 本质:分离职责,动态组合。
命令 Command
- 定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
- 功能:将请求封装为对象,定义统一执行操作的接口,该对象可被存储、转发、记录、处理、撤销等。
- 本质:封装请求。
解释器 Interpreter
- 定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
- 功能:使用解释器对象来表示和处理相应的语法规则,一般一个解释器处理一条语法规则。
- 本质:分离实现,解释执行。
迭代器 Iterator
- 定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
- 功能:提供聚合对象的迭代访问。
- 本质:控制访问聚合对象中的元素。
中介者 Mediator
- 定义:用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
- 功能:封装对象的交互。
- 本质:封装交互。
备忘录 Memento
- 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
- 功能:保存及恢复对象状态。
- 本质:保存和恢复内部状态。
观察者 Observer
- 定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。
- 功能:注册通知。
- 本质:触发联动。
状态 State
- 定义:允许一个对象再起内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
- 功能:由状态决定对象的行为。
- 本质:根据状态来分离和选择行为。
策略 Strategy
- 定义:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
- 功能:把具体的算法从具体的业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以互选替换。
- 本质:分离算法,选择实现。
模板方法 Template method
- 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 功能:固定算法骨架,让具体算法实现可扩展。
- 本质:固定算法骨架。
访问者 Visitor
- 定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
- 功能:访问者模式能给一系列对象透明地添加新功能,从而避免在维护期间对这一系列对象进行修改,而且还能变相实现复用访问者所具有的功能。
- 本质:预留通路,回调实现。