设计模式 (14) - 结构型模式总结

来源:互联网 发布:cors java 编辑:程序博客网 时间:2024/05/20 18:43

结构型模式关注于“如何组织对象”形成一个合理的对象结构。我们知道对象都具有属性和方法:

  • Flyweight/享元模式优化属性的定义来节约内存开销。享元模式把属性分解为“内在属性”和“外部属性”。“内部属性”即“本质属性”的数量相对少并且变化较少,“外部属性”则由客户端维护并以参数的形式通知Flyweight对象。这样的分解方法,使Flyweight对象的内存需求相对较小。享元模式通过抽象工厂方法来创建Flyweight对象并在工厂方法类中内置对象共享机制,这样使用享元模式定义的对象的内存需求更小。
  •   从对象方法的角度看,结构型模式从两个方面来优化对象的设计:
  • 对象外部接口的优化:
    • 外观模式定义一套新的接口对客户隐藏子系统及子系统间的交互,解除了客户和系统设计之间的耦合;
    • 组合模式为客户提供一致的接口来处理容器对象和叶子对象,客户不必(或者很少)关注容器对象和叶子对象的差异性;
    • 代理模式为对象访问提供一个间接层,为客户隐藏一些访问控制相关的逻辑,例如RPC(远地过程调用)隐藏了“被调逻辑”可能和客户不在相同计算机的事实。
  • 对象接口实现的优化:
    • 适配器模式协调两个不兼容的接口,重用那些功能相似但接口不兼容的代码逻辑;
    • 装饰模式不用继承,而用组合方式为对象动态添加功能,让被装饰对象对于新添加的功能保持透明;
    • 桥接模式解除了面向客户的“抽象接口”和面向实现的“实现接口”之间的耦合,让两个接口独立变化。

由此可见,结构型模式优化了对象的设计。

0 0