![](/img/trans.png)
[英]Implementation of Interface Segregation Principle Example given in Uncle Bob's Agile Principles Book
[英]Liskov substitution principle (Uncle Bob book)
我在 C# 中的敏捷原则模式和实践(鲍勃叔叔)一书中读到,导数中退化函数的存在并不总是表明违反 LSP,但是当它们发生时值得一看。
我的问题是,有人可以举个例子,当他们不违反 LSP 时。
我认为,一个很好的 C# 示例是各种流类。 抽象Stream
类定义了许多可能不适用于派生类的方法。 我正在特别考虑Can[...]
方法、 CanRead
、 CanSeek
、 CanTimeout
等。从表面CanTimeout
,它们是不适用的派生类中的退化方法,但它们是不一定需要实现的流。 例如,引用Stream
抽象类的方法可以查询CanRead
,并根据结果做出相应的反应,即使它是退化的实现,只要退化的实现返回正确的答案。 这样, Stream
实现可能具有退化方法,但不会违反 LSP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.