利斯科夫替代原则(鲍勃叔叔书)

时间:2015-09-21 21:13:22

标签: c# design-principles

我在C#(Uncle Bob)一书中的敏捷原理模式和实践中读到,衍生品中退化函数的存在并不总是表明存在LSP违规,但是当它们发生时值得关注它们。

我的问题是,有人在不违反LSP的情况下给我一个例子。

1 个答案:

答案 0 :(得分:1)

我认为一个好的C#示例是各种流类。 abstract @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { .... } 类定义了许多可能不适用于派生类的方法。我正在考虑Stream方法,Can[...]CanReadCanSeek等等。从表面上看,它们是派生类中的退化方法不适用于,但它们是不一定需要实现的流的方面。例如,引用CanTimeout抽象类的方法可以查询Stream,并根据结果做出相应的反应,即使它是简并实现,只要简并实现返回正确答案即可。通过这种方式,CanRead实现可能具有退化方法,但不会违反LSP。