【发布时间】:2016-07-12 13:48:46
【问题描述】:
LSP 原则 -- 如果 D 是 B 的子类型,则程序中的 B 类型对象可以被 D 类型的对象替换,而不会改变该程序的任何所需属性。
例如:
Derived d = new Derived();
Base b = new Base();
//as per the principle, the below code should work
b = new Derived();
b = d;
.Net 框架会处理这个问题。作为开发人员,我与此无关。那么定义这样的原则有什么用呢?
【问题讨论】:
-
这只是处理类型转换——作为开发人员,您需要确保 a) 在派生类中实现的任何方法都不会导致意外行为,并且 b) 消费代码不依赖于特定于基类实现的东西。这很棘手,因为有时基本实现的细节会泄漏到使用代码中,而派生类没有按预期交付。
标签: ooad