面向对象设计的原则

原创 2006年06月16日 09:13:00

面向对象设计的原则

对待原则的态度:
如果我们将这些原则奉为圣经、天条,用共产党的话来说是教条主义,
那么还是没学过这些原则好一点,因为封闭了我们的思想。这些原则
是大师们总结OO设计经验,提炼出来的一些精髓,没事老是想着去打倒它们,
好象是属于没事找抽型:)。如果在能承担失败后果的前提下,有充足的理由,
我会尝试一下违背他们,既使失败了,也能更深刻地理解这些原则。
如果成功,嘿嘿,YYing。

SRP 单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
理解:前两天在CSDN中看到一个网友提出PetShop4.0中将实体类(Model项目中的类)和操作类(BLL
项目中的类)合并,这样有利于简化程序结构。我觉得有悖于这条原则。

OCP 开放-封闭原则
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
理解:面向对象设计是要成本,代码比结构化程序多而且牺牲一定的效率,所获得的收益是代码复用,应付多变的需求。
修改软件实体将影响到已有的客户程序,等于没有复用,这种做法属于只有投入没有产出的,只干活不拿钱的事,
我们千万不能干。

LSP Liskov 替换原则
子类型必须能够替换掉它们的基类型。
理解:子类型无法替换基类型,将会导致在派生类对象作为基类对象进行传值时的错误。
这样多态机制处于瘫痪状态了。封装是面向对象的基础,继承可以算是实现手段,
多态是面向对象的核心。头可断,血可流,小JJ不可切。

DIP 依赖倒置原则
抽象不应该依赖于细节,细节应该依赖于抽象。
理解:这可能是程序员违反最多的原则,Gof23种设计模式,
好象没几个是和这条原则没关系的。
把程序比做建筑,细节是房子的地基,抽象是房子的装璜。
扒地基搞装修的,我这辈子都没见过。
往事不堪回首,翻开我的代码,发现我也是有钱人啊,搞装修算什么,偶扒地基搞装修,抽象依赖于细节的地方多得海了去了。
不知者不为过,我很大度地原谅了自己。

ISP 接口隔离原刚
不应该强迫客户依赖于他们不用的方法。接口属于客户,不属于它所在的类层次结构。
理解:接口是客户程序和类库交流的一个通道。不同的客户程序可能用到类库的不同方法,
因此对不同的客户程序要设计一套不同的接口。类库恒久远,接口天天变啊。类库是老婆,
要保持稳定,接口是哄老婆的花言巧语,要在不同的场合,随时进行切换。

REP 重用发布等价原则
重用的粒度就是发布的粒度。

CCP 共同封闭原则
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,
则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

CRP 共同重用原则
一个包的所有类应该是共同重用的。如果重用了包的一个类,那么就要重用包中的所有类。

ADP 无环依赖原则
在包的依赖关系图中不允许存在环。

SDP 稳定依赖原则
朝着稳定的方向进行依赖。

SAP 稳定抽象原则
包的抽象程度应该和其稳定程度一致。

PS:增加ing

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

面向对象设计原则

  • 2013-05-30 08:34
  • 1.83MB
  • 下载

面向对象设计原则

  • 2012-09-27 10:14
  • 4.63MB
  • 下载

面向对象设计原则

单一职责原则(SRP--Single-Responsibility Principle) 一、SRP简介(SRP--Single-Responsibility Principle): 就一个类而言,应...

面向对象设计原则

  • 2012-11-09 23:02
  • 31KB
  • 下载

面向对象设计原则.pdf

  • 2013-02-08 10:14
  • 64KB
  • 下载

面向对象设计原则七 - 组合优先于继承

组合 通过创建一个由其他对象组合的对象来获得新功能的重用方法 新功能的获得是通过调用组合对象的功能实现的 有时又叫聚合 例如: 一个对象拥有或者对另外一个对象负责并且两个对象有相同的生...

面向对象设计的原则指南

  • 2014-07-26 13:49
  • 286KB
  • 下载

面向对象七大设计原则剖析

文章以单一原则为基础,深入讨论了程序设计7大原则的关系,及其在软件设计中的作用、地位。 在深入分析了单一原则和接口隔离原则两个基础性原则后,逐步分析了组合原则与依赖倒置原则,深刻剖析了它们在软件设计中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)