面向对象设计模式之里氏代换原则

Liskov Substitution Principle(里氏代换原则,LSP):子类型(subtype)必须能够替换它们的基本类型。反过来的代换不成立。

例如有两个类,一个类为BaseClass,另一个类是SubClass类,并且SubClass类是BaseClass的子类,那么一个方法如果可以接受一个BaseClass类型的基类对象base的话,如Method1(base),那么它必然可以接受一个BaseClass类型的子类对象sub,Method1(sub)能够正常运行。反过来的代换不成立,如一个方法method2接受BaseClass类型的子类对象sub为参数:method2(sub),那么它一般而言不可以有method2(base),除非是重载方法。

里氏代换原则(Liskov Subsitution Priniciple,LSP)有两种定义方式,第一种定义方式相对严格,其定义如下:

如果对每个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时程序P的行为没有变化,那么类型S是类型T的子类型。

第二种更容易理解的方式定义如下:

  所有引用基类的地方都必须能透明的使用其他子类的对象。

  • 添加到短语集
     
    • 没有此单词集: -> ...
       
    • 创建新的单词集...
  • 拷贝

猜你喜欢

转载自www.cnblogs.com/sy-liu/p/12921244.html