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

工厂模式

1111
Global site tag (gtag.js) - Google Analytics