作为一名Java开发人员,我从未听说过LSP模式。只有当我读到一些关于C++的东西时,我才遇到了这种模式。这很奇怪,因为这种模式有时被视为面向对象编程的5个原则之一。
该原则由Barbara Liskov于1987年首次提出,并于1994年表述为:
“设 q(x) 是一个可证明 T 类型的对象 x 的属性。则 q(y) 对于 S 类型的对象 y 应该是可证明的,其中 S 是 T 的子类型。“
换句话说:
如果类 B 是类 A 的子类,
如果 A 有一个方法 f(),
如果 b 是 B 的实例和 A 的实例,
那么在代码的所有部分使用“a.f()”应该能够使用“b.f()”而不修改