里氏替换原则LSP

一、原理介绍

所有引用基类的地方必须能透明地使用其子类的对象。也就是说,只有满足以下2个条件的OO设计才可被认为是满足了LSP原则:

不应该在代码中出现if/else之类对子类类型进行判断的条件。

以下代码就违反LSP定义。

if (obj typeof Class1) {
	do something
} else if (obj typeof Class2) {
	do something else
}
1
2
3
4
5

子类应当可以替换父类并出现在父类能够出现的任何地方,或者说如果我们把代码中使用基类的地方用它的子类所代替,代码还能正常工作

里氏替换原则LSP是使代码符合开闭原则的一个重要保证。同时LSP体现了: 1) 类的继承原则: 如果一个继承类的对象可能会在基类出现地方出现运行错误,则该子类不应该从该基类继承,或者说,应该重新设计它们之间的关系。 2)动作正确性保证: 从另一个侧面上保证了符合LSP设计原则的类的扩展不会给已有的系统引入新的错误。

最近更新: 1/24/2019, 12:54:13 PM