【问题标题】:What is developers role/responsibility wrt LSP (Liskov's Substitiution Principle)?LSP(Liskov 替换原则)的开发人员角色/责任是什么?
【发布时间】: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


【解决方案1】:

作为开发人员,您可能会犯错误,并以某种方式编码S,这使得它不适合替代T,即使语言和运行时不妨碍您这样使用它——这可能是语言内部的行为(例如,在 S 中抛出异常,而 T 不会),或者是违反 T 所宣传的副作用约束的副作用,令人作呕

请参阅Can you explain Liskov Substitution Principle with a good C# example? 获取示例a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2014-01-18
    • 2010-12-03
    • 2014-08-16
    • 2019-10-13
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多