六大设计原则之里氏替换原则

  • 设计模式与设计原则,设计原则,里氏替换原则,
  • 2016-05-16 03:40:38

里氏替换原则通俗的解释是:父类能出现的地方应该可以被替换成子类,但子类出现的地方不一定可以替换成父类。

定义

If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in term of T , the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T . 如果对每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T 定义的所有程序 P 在所有的对象 o1 都可以替换成 o2 时,程序 P 的行为没有发生变化,那么类型 S 是类型 T 的子类型。

Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it . 所有引用基类的地方必须能够透明地使用其子类的对象。

含义

  1. 子类必须完全实现父类的方法
  2. 子类可以有自己的个性
  3. 覆盖或实现父类的方法时输入参数可以被放大
  4. 覆写或实现父类的方法时输出结果可以被缩小

对于方法体,它期望获得一个产品抽象类,实际得到产品具体实现类,产品的具体实现对方法体是透明的,这符合原则;对于调用者,它期望获得一个产品抽象类,实际得到产品具体实现类,产品的具体实现对调用者也是透明的,这符合原则。

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 六大设计原则之里氏替换原则
本文地址: https://binkery.com/archives/456.html