簡體   English   中英

Liskov 替換原則(鮑勃大叔書)

[英]Liskov substitution principle (Uncle Bob book)

我在 C# 中的敏捷原則模式和實踐(鮑勃叔叔)一書中讀到,導數中退化函數的存在並不總是表明違反 LSP,但是當它們發生時值得一看。

我的問題是,有人可以舉個例子,當他們不違反 LSP 時。

我認為,一個很好的 C# 示例是各種流類。 抽象Stream類定義了許多可能不適用於派生類的方法。 我正在特別考慮Can[...]方法、 CanReadCanSeekCanTimeout等。從表面CanTimeout ,它們是不適用的派生類中的退化方法,但它們是不一定需要實現的流。 例如,引用Stream抽象類的方法可以查詢CanRead ,並根據結果做出相應的反應,即使它是退化的實現,只要退化的實現返回正確的答案。 這樣, Stream實現可能具有退化方法,但不會違反 LSP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM