首页 > 代码库 > 设计模式之总述篇

设计模式之总述篇

以下是对《Head First 设计模式》中提到的OO原则和设计模式的总结。

OO原则和设计模式的联系:模式可以让我们建造出具有良好OO设计质量的系统。模式被认为是历经验证的OO设计经验。

OO设计原则:
 1.封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起;
 
2.多用组合,少用继承;良好的OO设计必须具备可复用、可扩充、可维护三个特性。

 3.针对接口编程,而不是针对实现编程;“针对接口编程”真正的意思是“针对超类型(supertype)编程”。(使用抽象超类就可以使用动态了,这也是“针对接口编程”的用意所在。)
 4.为了交互对象之间的松耦合设计而努力;松耦合之所以能让我们建立有弹性的OO系统,能够应付变化,是因为对象之间的互相依赖降到了最低。
 5.类应该对扩展开放,对修改关闭
 6.要依赖抽象,不要依赖具体类;这个原则说明了:不能让高层组件依赖低层组件,而且,不管高层或低层组件,都应该依赖于抽象。变量不可以持有具体类的引用;不要让类派生自具体类;不要覆盖基类中已实现的方法。
 7.最少知识原则:只是和你的密友谈话;这个原则希望我们在设计中,不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他部分。
 8.好莱坞原则:别调用我(高层组件),我们会调用你们(低层组件);好莱坞原则可以给我们一种防止“依赖腐败”的方法。让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。
 9.一个类应该只有一个引起变化的原因;类的每个责任都有改变的潜在区域,超过一个责任,意味着超过一个改变的区域。这个原则告诉我们,尽量让每个类保持单一责任。当一个模块或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚(内聚用来度量一个类或模块紧密地达到单一目的或责任)。

常见设计模式的简单描述:
装饰者模式             包装一个对象,以提供新的行为
状态模式                 封装了基于状态的行为,并使用委托在行为之间切换
迭代器模式             在对象的集合之中游走,而不暴露集合的实现
外观模式                 简化一群类的接口
策略模式                 封装可以互换的行为,并使用委托来决定要使用哪一个
代理模式                 包装对象,以控制对此对象的访问
工厂方法模式          由子类决定要创建的具体类是哪一个
适配器模式              封装对象,并提供不同的接口
观察者模式              让对象能够在状态改变时被通知
模板方法模式          由子类决定如何实现一个算法中的步骤
组合模式                 客户用一致的方式处理对象集合和单个对象
单件模式                 确保有且只有一个对象被创建
抽象工厂模式          允许客户创建对象的家族,而无需指定他们的具体类
命令模式                 封装请求成为对象