里氏替换原则通俗的解释是:父类能出现的地方应该可以被替换成子类,但子类出现的地方不一定可以替换成父类。
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 . 所有引用基类的地方必须能够透明地使用其子类的对象。
对于方法体,它期望获得一个产品抽象类,实际得到产品具体实现类,产品的具体实现对方法体是透明的,这符合原则;对于调用者,它期望获得一个产品抽象类,实际得到产品具体实现类,产品的具体实现对调用者也是透明的,这符合原则。
- EOF -
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 六大设计原则之里氏替换原则
本文地址: https://binkery.com/archives/456.html