本文最后更新于 1123 天前,其中的信息可能已经有所发展或是发生改变。
里式替换原则
定义
Liskov Substitution Principle:子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。
个人理解
能够替换不只是从语法(多态)角度考虑,还需要保证替换后,原有业务逻辑正确。
LSP的意义
-
改进已有实现
例如程序最开始实现时采用了低效的排序算法,改进时使用LSP实现更高效的排序算法。
-
指导程序开发
告诉我们如何组织类和子类(subtype),子类的方法(非私有方法)要符合contract。
-
改进抽象设计
如果一个子类中的实现违反了LSP,那么是不是考虑抽象或者设计出了问题。