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

March 22, 2016

设计模式与设计原则

里氏替换原则

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

定义

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 ---

添加新评论