楼观问道

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向对象设计原则主要为单一职责原则(SRP),开闭原则(OCP),里氏替换原则(LSP),依赖倒置原则(DIP),接口隔离原则(ISP),旨在获得可高度重用,可稳定扩展的系统。

单一职责原则

  尽量保证单个类只做单独的一件事,这样就可以从根本上保证代码清洁,此时单个类只有一种客户程序,不会出现由于要满足不同的客户程序而出现的代码僵化的现象。

开闭原则

  软件实体应对修改封闭,只对扩展开放。这个原则更像一个目标。原先的实体只能扩展,不能修改,此时也就保证了原有功能的稳定,在迭代开发过程中只需关注新功能的开发即可。

里氏替换原则

  子类型必须能够替换掉他的父类型。按照面向接口设计原则,类都是从接口或抽象类派生而来,先有接口抽象类,然后派生类派生,将确定不变的部分实现在该类中,变化的部分交给子类处理。

它关注的是类继承层次的设计。从某个角度看,将公共部分代码放入父类中也是一种有效的降低复杂性的方法。从此公共的部分只需要关注父类,子类只需要关注差异的东西。当然此时的父子类分工要明确,

父类中已实现的行为在子类中不应该在改变,若存在改变场景,则表示该行为不应该固化在父类中,应重新建立父子层级。

依赖倒置原则

  高层模块不应该依赖于底层模块,两者都应依赖于抽象;抽象不应依赖细节,细节应依赖于抽象。着眼点在于类依赖关系设计。抽象可以灵活运用类的多态特性,而无需显示判定类的类型。一切都是动态化的自由运行。

接口隔离原则

  不应该强迫客户依赖它不适用的方法,接口属于客户。可有效防止代码僵化。

理想很丰满,具体实现起来总有各方面的考量,一般的进度压力下,设计会有不同程度的妥协。并且各方面都有高度灵活性和扩展性往往是一种奢望。就像敏捷设计的原则,只预判定明显会发生变化的部分,封装变化,其他的当遇到时在封装,避免过度设计。可见不存在完美符合以上原则的开发过程,我们能做的,只是尽可能的依据以上原则降低必要的修改成本,尽量确保不修改而已。

posted on 2017-05-04 01:15  楼观问道  阅读(59)  评论(0)    收藏  举报