[设计模式] 《设计模式:可复用面向对象软件的基础》

链接为维基中相应词条.

《设计模式:可复用面向对象软件的基础》

设计模式依据目的可以分为三类:

  • 创建型(Creational)
  • 结构型(Structural)
  • 行为型(Behavioral)

设计模式按照范围分为两类:

  • 类模式: 处理类和子类之间的关系, 这些关系通过继承建立, 是静态的, 在编辑时刻便确定下来了.
  • 对象模式: 处理对象间的关系, 这些关系在运行时刻是可以变化的, 更具有动态性.

  • 创建型类模式:将对象的部分创建工作延迟到子类;

  • 创建型对象模式:将对象的部分创建工作延迟到另一个对象中;
  • 结构型类模式:使用继承机制组合类;
  • 结构型对象模式:描述了对象的组装方式;
  • 行为型类模式:使用继承描述算法和控制流;
  • 行为型对象模式:描述一组对象怎样协作完成单个对象无法完成的任务;

设计模式编目, 未说明类模式的默认为对象模式:

创建型

1、Factory Method (类模式): 定义一个用于创建对象的接口, 让子类决定将哪一个类实例化. Factory Method使一个类的实例化延迟到其子类.

2、Abstract Factory: 提供一个创建一系列相关或相互依赖对象的接口, 而无需指定它们具体的类.

3、Builder: 将一个复杂对象结构与它的表示分离,使得同样的构建过程可以创建不同的表示.

4、Prototype: 用原型实例制定创建对象的种类, 并且通过拷贝这个原型来创建的对象.

5、Singleton: 保证一个类仅有一个实例,并且提供一个访问它的全局访问点。

结构型

1、Adapter(类模式): 通过类继承, 将一个类的接口转换成客户希望的另外一个接口. 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.

2、Adapter: 通过对象组合, 将一个类的接口转换成客户希望的另外一个接口. 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.

3、Bridge: 将抽象部分与它的显示部分分离, 使它们都可以独立地变化.

4、Composite: 将对象组合成树形结构以表示“部分-整体”的层次结构. 使得客户对单个对象和复合对象的使用具有一致性.

5、Decorator: 动态地给一个对象添加一些额外的职责. 就扩展功能而言, Decorator模式比生成子类方式更为灵活.

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

7、Flyweight: 运用共享技术有效地支持大量细粒度的对象.

8、Proxy: 为其他对象提供一个代理以控制对这个对象的访问.

行为型:

1、Interpreter(类模式): 给定一个语言,定义它的语法的一种表示, 并定义一个解释器, 该解释器使用该表示来解释语言中的语句.

2、Template Method(类模式): 定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. 使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤.

3、Chain Of Responsibility: 为清除请求的发送者和接受者之间的耦合, 而使多个对象都有机会处理这个请求. 将这些对象连成一条链, 并沿着这条链传递该请求, 直到有一个对象处理它.

4、Command: 将一个请求封装为一个对象,从而使得可以用不同请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

5、Iterator: 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不需要暴露该对象的内部表示.

6、Mediator: 用一个中介对象来封装一系列的对象交互, 中介者使得各对象不需要显式地相互引用,从而使得耦合度降低,而且可以独立地改变它们之间的交互。

7、Memento: 在不破坏封装性的前提下, 捕获一个对象内部的状态, 并在该对象之外保存这个状态. 这样以后就可以将该对象恢复到保存状态.

8、Observer: 定义对象的一种一对多的依赖关系, 以便当一个对象的状态发生改变时, 所有依赖于它的对象多得到通知并自动刷新.

9、State: 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类.

10、Strategy: 定义一系列的算法把它们一个个封装起来, 并且使它们可以相互替换. 本模式使得算法的变化可以独立于使用它的客户.

11、Visitor: 表示一个作用于某对象结构中的各元素的操作, 它使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作.

维基

Examples of GoF Design Patterns