- 浏览: 2302 次
最新评论
文章列表
敏捷软件开发:原则、模式与实践
- 博客分类:
- 读书笔记
对于继承,is-a是关于行为的。例如,在我们看来正方形 is-a长方形,但是这个并不是行为上的is-a。正方形的行为上要求长和宽是相等的,所以设计上如果让正方形继承长方形,那正方形set长和宽的方法会修改另外一个属性,保持长和宽相等。
契约设计(Design by Contract):在继承一个类的时候,只能使用相等或更弱的前置条件替换原始前置条件,只能使用相等或者更强的后置条件来替换原始后置条件。
is-a太过于宽泛而不应该作为可继承的标准,可继承的标准应该是可替换。LSP
依赖倒置的核心就是不要调用我,我会调用你,高层依赖高层,底层依赖高层
SRP 单一职责
就一个类而言,应该仅有一个引起它变化的原因
OCP 开闭原则
软件的实体(类,模块,函数等)对扩张开放,对修改关闭
LSP Lislov 替换原则
子类型必须可以替换掉他们的基本类型
DIP 依赖倒置原则
抽象不应该依赖于细节。细节应该依赖于抽象
ISP 接口隔离原则
不应该强迫客户依赖于他们不使用的方法。接口属于客户,不属于它所在的类层次结构。
REP 重用发布等价原则
重用的粒度就是发布的粒度
CCP 共同封闭原则
包中所有类对于同一性质的变化应该是共同封闭的。一个变化若对另一个包产生影响,则将对该包中的
所有类产生影响,而对于其他包不造成 ...