结构型模式

适配器模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性:

  • 想使用的类已存在,但它的接口不符合要求
  • 想创建一个可以复用的类,但它的接口不符合相关类的要求
  • 想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配接口

桥接模式

将抽象的部分与它的实现部分分离,使它们都可以独立地变化。
适用性:

  • 不希望在抽象和它的实现部分之间有一个固定的绑定关系
  • 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充
  • 对一个抽象的实现部分的修改应该对客户不产生影响
  • 想在多个对象之间共享实现(可能使用引用计数),但同时要求客户不知道这一点。

组合模式

将对象组合成树形结构以表示“部分-整体”的层次结构。
适用性:

  • 想表示对象的部分-整体层次架构
  • 希望用户忽略组合对象与单个对象的不同

装饰模式

动态地给一个对象添加一些额外的职责。
适用性:

  • 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
  • 处理那些可以撤销的职责
  • 当不能采用生成子类的方法进行扩充时

外观模式

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

  • 为一个复杂的子系统提供一个简单接口时
  • 客户程序与抽象类的实现部分之间存在着很大的依赖性
  • 当需要构建一个层次结构的子系统时

享元模式

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

  • 一个应用程序使用了大量的对象
  • 完全由于使用了大量的对象,造成很大的内存开销
  • 对象的大多数状态可变为外部状态
  • 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象
  • 应用程序不依赖对象的外部状态

你可能感兴趣的:(结构型模式)