Liskov Substitution Principle

Liskov Substitution Principle
LSP:如果对每一个类型为T1的对象的O1,都有类型为T2的对象O2,使得以T1定义的所有的程序P在所有对象O1都代换为O2时,程序P没有发生变化,那么类型T2是类型T1的子类型。换言,一个软件实体如果使用的是一个基类的话,那么一定适合与其子类,而且它根本不能察觉出基类对象与子类对戏的区别。
eg:
假设有两个类,一个是Base类,一个是Sub类,并且Sub类是Base类的子类。那么有一个方法如果可以接受基类对象b的话:method(Base b),那么它必然也可以接受一个子类对象s,也即有:method(Sub s);LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能会收到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的功能。LSP反之就不成立了。

你可能感兴趣的:(Liskov Substitution Principle)