里氏替换原则
Jihongchang(讨论 | 贡献)2023年2月6日 (一) 08:39的版本 (建立内容为“=== 什么是里氏替换原则 === Liskov Substitution Principle,LSP,它有两种定义: ==== 第一种定义 ==== 如果每一个类型为 S 的对象 o1…”的新页面)
什么是里氏替换原则
Liskov Substitution Principle,LSP,它有两种定义:
第一种定义
如果每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,
使得以 T 定义的所有程序 P 在所有的对象 o1 都替换成 o2 时,程序 P 的行为没有发生变化,那么类型 S 是类型 T 的子类型。
第二种定义
所有引用基类的地方必须能透明地使用其子类的对象。
第二个定义是最清晰明确的,通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是子类还是父类。
但是反过来就不行了,有子类出现的地方,父类未必就能适应。
参考
《设计模式之禅》