设计模式 (14) - 结构型模式总结
2015-07-26 22:17
176 查看
结构型模式关注于“如何组织对象”形成一个合理的对象结构。我们知道对象都具有属性和方法:
Flyweight/享元模式优化属性的定义来节约内存开销。享元模式把属性分解为“内在属性”和“外部属性”。“内部属性”即“本质属性”的数量相对少并且变化较少,“外部属性”则由客户端维护并以参数的形式通知Flyweight对象。这样的分解方法,使Flyweight对象的内存需求相对较小。享元模式通过抽象工厂方法来创建Flyweight对象并在工厂方法类中内置对象共享机制,这样使用享元模式定义的对象的内存需求更小。
从对象方法的角度看,结构型模式从两个方面来优化对象的设计:
对象外部接口的优化:
外观模式定义一套新的接口对客户隐藏子系统及子系统间的交互,解除了客户和系统设计之间的耦合;
组合模式为客户提供一致的接口来处理容器对象和叶子对象,客户不必(或者很少)关注容器对象和叶子对象的差异性;
代理模式为对象访问提供一个间接层,为客户隐藏一些访问控制相关的逻辑,例如RPC(远地过程调用)隐藏了“被调逻辑”可能和客户不在相同计算机的事实。
对象接口实现的优化:
适配器模式协调两个不兼容的接口,重用那些功能相似但接口不兼容的代码逻辑;
装饰模式不用继承,而用组合方式为对象动态添加功能,让被装饰对象对于新添加的功能保持透明;
桥接模式解除了面向客户的“抽象接口”和面向实现的“实现接口”之间的耦合,让两个接口独立变化。
由此可见,结构型模式优化了对象的设计。
Flyweight/享元模式优化属性的定义来节约内存开销。享元模式把属性分解为“内在属性”和“外部属性”。“内部属性”即“本质属性”的数量相对少并且变化较少,“外部属性”则由客户端维护并以参数的形式通知Flyweight对象。这样的分解方法,使Flyweight对象的内存需求相对较小。享元模式通过抽象工厂方法来创建Flyweight对象并在工厂方法类中内置对象共享机制,这样使用享元模式定义的对象的内存需求更小。
从对象方法的角度看,结构型模式从两个方面来优化对象的设计:
对象外部接口的优化:
外观模式定义一套新的接口对客户隐藏子系统及子系统间的交互,解除了客户和系统设计之间的耦合;
组合模式为客户提供一致的接口来处理容器对象和叶子对象,客户不必(或者很少)关注容器对象和叶子对象的差异性;
代理模式为对象访问提供一个间接层,为客户隐藏一些访问控制相关的逻辑,例如RPC(远地过程调用)隐藏了“被调逻辑”可能和客户不在相同计算机的事实。
对象接口实现的优化:
适配器模式协调两个不兼容的接口,重用那些功能相似但接口不兼容的代码逻辑;
装饰模式不用继承,而用组合方式为对象动态添加功能,让被装饰对象对于新添加的功能保持透明;
桥接模式解除了面向客户的“抽象接口”和面向实现的“实现接口”之间的耦合,让两个接口独立变化。
由此可见,结构型模式优化了对象的设计。
相关文章推荐
- jdbc_分页查询,大数据,批处理,存储过程
- python extend append
- jQuery+Ajax+Jsp做二级级联
- 收不到Win10正式版预订通知?一个批处理搞定
- 黑马程序员----基础题----我的基础题
- 2.5-ls命令
- 数据结构图小结
- Visual Studio 2015 Enterprise Key
- windows nginx出现 was not signaled for 5s的看过来
- Overflow
- Xen 的设备
- 常用的android弹出对话框
- 2.4-cd命令
- Qt creator 编译错误:无法解析的外部符号(命令)
- opencv如何获取摄像头的数量
- 树莓派解码海康摄像机丢包现象解决
- 易经八卦在程序世界中的体现
- 设计模式 (13) - 桥接模式
- 设计模式 (12) - 装饰模式
- maven学习(二)——archetype