创建型模式,Creational Patterns
- 抽象工厂,Abstract Factory。5,提供一个接口用于创建一系列相关或依赖的对象,而不需要指定具体的类。
- 工厂方法,Factory Method。5,定义一个接口用于创建一个对象,但是让子类决定实例化哪个类。工厂方法让类的实例化推迟给子类进行。
- 单例,Singleton。4,确保一个类只有一个实例,并提供一个全局的访问此实例的入口。
- 建议者,Builder。2,把类的构造和表示分离开,让相同的构造过程可以创建不同的表示。
- 原型,Prototype。3,使用原型的实例指定要创建对象的类型,然后通过复制这个原型创建新的对象。
结构型模式,Structural Patterns
- 适配器,Adapter。4,把一个类的接口转换成客户想要的另一个接口。让多个不兼容接口的类能够协作。
- 桥接,Bridge。3,分离实现和抽象,让实现和抽象可以独立地改变。
- 组合,Composite。4,把对象组成成树型结构,来表示“部分-整体”的分层。让客户一致地对待单独的对象和组合的对象。
- 装饰,Decorator。3,动态地给一个对象附加职责。比生成子类的方式更为灵活地扩展对象的功能。
- 外观,Facade。5,在子系统中,为一组接口提供一个统一的接口。Facade定义一个高层接口要子系统更易用。
- 享元,Flyweight。1,使用共享的方式有效地支持大量细粒度的对象。
- 代理,Proxy。4,为其他对象提供一个代理或占位符来访问这个对象。
行为型模式,Behavioral Patterns
- 责任链,Chain of Resp。2,通过提供多个对象处理一次请求来避免耦合请求的发送者和接收者。把这些对象链接起来,通过链条传递请求,直到有一个对象处理。
- 命令,Command。4,把请求封装成对象,从而用不同的请求来参数化客户端,队列化或日志化请求,并支持命令的撤消。
- 解释器,Interpreter。1,给定一种语言,用其语法和解释器定义一种表达,使用这种表达解释这种语言的句子。
- 迭代器,Iterator。5,提供一种按顺序访问一个聚合型对象中元素的方式,而不用暴露其下层的表示。
- 中介者,Mediator。2,定义一个对象,此对象封装了一组对象如何交互。Mediator通过显式地阻止对象间互相引用来促进松耦合,并且可以单独地改变对象间的交互。
- 备忘,Memento。1,不违背封装,捕捉和具体化一个对象的内部状态,让对象可以恢复到原来的状态。
- 观察者,Observer。5,在对象间定义一个“一对多”的依赖关系,当那一个对象改变状态时,自动地通知和更新那些依赖的多个对象。
- 状态,State。3,允许一个对象的内部状态变化时可以改变对象的行为。The object will appear to change its class.
- 策略,Strategy。4,定义一组算法,封装每个算法,让它们可以互换。让客户端可以单独切换算法。
- 模版方法,Template Method。3,定义一个运算中的算法的骨架。把某些步骤推迟给子类,不用修改算法的结构,让子类重新定义算法的某些步骤
- 访问者,Visitor。1,表示在一个对象结构的元素上执行的操作。不用改变要操作的元素的类,达到定义一个新的操作。