我学设计模式 之 面向对象设计原则
面向对象常用的设计原则有:
1. 单一职责原则
2. 开放封闭原则
3. Liskov替换原则
4. 依赖倒置原则
5. 接口隔离原则
单一职责原则:“就一个类而言,应该只专注于做一件事和仅有一个引起变化的原因。” 这就是所谓的单一职责原则。
开放封闭原则:要求软件实体(类、模块以及功能等)对扩展开放,对修改封闭。
对外开放的关键是“抽象”,而对象的多态则保证了这种扩展的开发性。开放原则首先意味着卫门可以自由的增加功能,而不会影响系统的功能。其次开放原则还意味着实现是可以替换的。
Liskov替换原则:如果对于每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2,程序P的行为没有变化,那么类型T2是类型T1的子类。
里氏替换原则是继承复用的基石。只有当衍生类可以替换掉父类,软件单位的功能不会受到影响时,基类才能正在被复用,而衍生类才可以在基类的基础上增加新的功能。
里氏替换原则在设计模式中的体现:
1. 策略模式
2. 合成模式
3. 代理模式
依赖倒转原则:要求客户端依赖于抽象耦合。即抽象不应该依赖于细节,细节应当依赖于抽象。依赖倒转的另一种表达方式:要针对接口编程,不要针对实现编程。
依赖倒置原则是OO设计的核心,列举在设计模式中的体现:
1. 工厂方法
2. 模板方法模式
3. 迭代模式
接口隔离原则:(Internet Segregation Principle,常常缩写ISP)讲的是:使用多个专门接口比使用单一接口要好。
换言之,从一个客户类的角度来讲:一个对另外一个类的依赖性应当是建立在最小的接口上的。
过于臃肿的接口是对接口的污染。
接口隔离原则在设计模式中的体现:
1. 适配器模式
合成/聚合复用原则(CARP):经常又叫做复用原则。就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。这个设计的另一个表述:要尽量使用复合/聚合,尽量不要使用集成。
迪米特法则(LOD):又叫最少只是原则。就是说一个对象应当对其他对象有尽可能少的了解。
迪米特法则与设计模式:
1. 门面模式
2. 调停模式
总结:
面向对象设计原则依然是面向对象思想的体现。例如:单一职责原则与接口隔离原则体现了封装的思想;开放封闭原则体现了对象的封装和多态;而Liskov替换原则体现的是对象继承的规范;至于依赖倒转原则,则是多态和抽象思想的体现。在充分理解面向对象思想的基础上,掌握基本的设计原则,并能够在项目设计中灵活运用这些原则,就能够改善我们的设计,尤其能够保证可重用性、可维护性与可扩展性等系统的质量属性。这些核心要素与设计原则,就是我们设计的对象法则,他们是理解和掌握设计模式的必备知识。
此类文章,只是代表个人目前学习所记录的笔记、心得。希望记录下来对自己以后也用,也希望看到的您能指点指点。
【文章出处:香港站群服务器 http://www.558idc.com/hkzq.html 复制请保留原URL】