lsp

    4熱度

    5回答

    Liskov Substitution Principle(LSP)指出,如果一個對象o1是S的一種類型,並且它可以代替對象o2,而這個對象是一個T類型的對象,並且不違反其所有用戶的原始行爲,那麼S是一個T的子類型。 用於顯示LSP違例的常見示例是矩形及其派生類型Square。我們的觀點是,雖然直覺上Square看起來是Rectangle的子類型,但是有一些與Rectangle不同的Square的

    2熱度

    3回答

    Arrays.asList(..)返回數組的一個List包裝。這個包裝具有固定的大小,並直接支持數組,因此對add()或試圖修改列表的其他函數的調用將拋出UnsupportedOperationException異常。 開發人員經常會對此感到驚訝,這一點從計算器中的問題可以看出。 然而列表界面具有add()方法應該意料之中連續工作列表的所有derivers,根據里氏替換原則(LSP) IS)由Ar

    3熱度

    1回答

    我answered a question regaurding一ImmutableMap。我建議使用代理模式。 問題在於Map包含put方法,該方法會拋出UnsupportedOperationException。用ImmutableMap代替Map的其他實例將打破Liskov的替代原則。不僅如此,需要申報put和putAll [違反接口隔離原則] 從技術上講,是沒有辦法用ImmutableMap

    2熱度

    1回答

    我對這個神祕的標題感到非常抱歉,但我真的不知道如何用簡短的標題風格來形容它。 首個簡短版本。簡單的郵件確認機制。一種方法是發送帶確認鏈接的電子郵件。點擊鏈接後,另一個控制器調用第二個方法,該方法從URL中驗證令牌。在兩個動作之間ConfirmationObject正在被存儲,包括令牌和其他可能的數據。成功確認使用「successHandler」後。 簡化代碼: interface SuccessH

    0熱度

    3回答

    在GoF中,有一部分關於生成器實現問題。其中一人說: 在Builder中默認爲空方法。在C++中,構建方法是 故意不聲明純虛擬成員函數。他們 定義爲空方法,而不是,讓客戶只覆蓋了 操作他們感興趣的問題。 不空方法違反LSP?它看起來類似於從Bird繼承Ostrich那可以fly。

    2熱度

    1回答

    關於Liskov替換原則(LSP),它聲明派生類的對象可以在不會導致程序執行失敗的情況下代替它的基類對象。 如果我的父類是一個抽象基類的功能是什麼: public abstract class BaseClass { public void heal() { health++; } } 我可以覆蓋的持續治療方法在派生類中,它仍然是有效的LSP-原則如: pub

    4熱度

    3回答

    我剛剛安裝了微軟代碼合同。它是.NET Framework和Visual Studio插件的一部分。它提供運行時檢查和定義合同的靜態檢查。 該工具有四個警告級別,所以我設置了最高。 我已經宣佈設計違反Liskov替代原則的類。 public class Person { protected int Age { get; set; } public Person(int ag

    0熱度

    1回答

    里氏替換原則要求 前提條件不能在亞型得到加強。 後代不能在子類型中被削弱。 超類型的不變式必須保存在子類型中。 歷史約束(「歷史規則」)。對象被認爲只能通過它們的方法來修改(封裝)。由於子類型可能會引入超類型中不存在的方法,因此這些方法的引入可能允許超類型中不允許的子類型狀態更改。歷史約束禁止這一點。 任何人都可以發佈違反這些要點的例子和解決這些問題的另一個例子嗎?

    2熱度

    2回答

    目前的設計是 SharedFolder是Folder一個子類。 SharedFile是帶有遠程資源URL的File的子類。 Folder在add方法中接受File。 SharedFolder只接受SharedFile而不是非共享File File可以被移動到另一個Folder與add。 用於瀏覽SharedFolder和Folder中的文件的UI基本相同。 add in SharedFile違反了

    -2熱度

    2回答

    我的示例程序如下; public class Animal { public virtual string MakeSound() { return "General Sound"; } } public class Dog : Animal { public override string M