lsp

    3熱度

    3回答

    由於(Liskov)替換原則,下列方法確實起作用,它說如果希望某個類的實例有引用,那麼您可以將引用替換爲該類的任何子類的實例。 public static void main(String[] args) { Cat felix = new Cat(); Object copyCat = felix; } 現在,據我所知,在這種情況下,我創建一個Cat對象(因此存儲器空間被在堆中創建),

    2熱度

    1回答

    我試圖第一次堅守Robert Martin的SOLID設計原則,但我並不擅長。 實質上,我需要一個「節點」對象的層次結構。一些節點是NodeHosts,一些是NodeChildren,一些是Both。每個人都這樣做過,但我無法弄清楚如何做到這一點不固過於複雜的設計,還是進行節點亞型是這樣的: INodeHostType node; public INodeType NodeType { ..

    8熱度

    2回答

    我正在使用違反Liskov替換原則的API:它拋出了自己的Exception類型,它擴展了Exception,但將基類中的異常消息放入新的ErrorCode字段,並將其自己的(無用的)消息放入消息字段。因此,爲了顯示正確的消息,我需要將異常強制轉換爲DerivedException類型並使用ErrorCode字段。如果我把它當作一個Exception對象,我會得到錯誤的信息。 現在,這在文體層面讓

    0熱度

    1回答

    在維基百科上 的Liskov Substitution Principle(LSP)說我有一個Alien類的numFingers屬性*。偶爾,我需要從數據庫中提取numFingers的總和,並按照其他字段值進行分組。在這些情況下,我不需要單獨處理每條記錄,但我確實需要訪問它們的許多功能 - 能夠獲取屬性,對它們執行一些基本邏輯等。這可能包括從數千記錄,所以當數據庫查詢可以完成對我的求和工作時,實例

    4熱度

    4回答

    使用案例:我正在使用數據模板將視圖與ViewModel進行匹配。數據模板通過檢查所提供的具體類型的最派生類型來工作,並且它們不查看它提供的接口,所以我必須在沒有接口的情況下執行此操作。 我在這裏簡化了這個例子,而忽略了NotifyPropertyChanged等,但在現實世界中,一個View將綁定到Text屬性。爲了簡單起見,假設帶有TextBlock的視圖將綁定到ReadOnlyText,並且帶

    70熱度

    2回答

    您是否可以用一個很好的C#示例來解釋Liskov替換原則(SOLID的'L'),該示例以簡化的方式涵蓋了原理的所有方面?如果真的有可能。

    1熱度

    3回答

    我遇到了里氏替換原則的聲明原件來到沃德的wiki今晚原始語句的方向性: 這到底是怎麼想的東西像下面的替代屬性:如果每個S類型的對象o1有一個類型爲T的對象o2,因此對於所有按照T定義的程序P,當o1代替o2時,P的行爲不變,那麼S是T的一個子類型。「 - Barbara Liskov,數據抽象和層次結構,SIGPLAN公告,23,5(1988年5月)。 我一直都在ŝ被垃圾在解析謂詞邏輯(我沒有計算

    -1熱度

    1回答

    是否使用虛擬方法違反LSP(L部分SOLID原則)還是有一些例外? 由於提前, Saghar Ayyaz

    48熱度

    3回答

    我通常會試圖確保我的對象實例符合Liskov Substitution Principle,但我一直在想,人們是否認爲LSP也適用於構造函數? 我已經嘗試了谷歌搜索這個,但我一直沒能找到任何強烈的意見任何方式。 我應該注意到我的大部分代碼都是在Ruby中,但我有時會發現我的子類構造函數與父類稍有不同。他們採用相同的基本參數集,通常還有額外的參數。有時候,其他類方法也會發生這種情況。 在我的腦海裏,

    2熱度

    3回答

    可以將有界的堆棧數據結構(具有上限的堆棧)作爲常規堆棧的子類型實現而不違反Liskov置換屬性嗎? 傳統的堆棧可以用來代替有界的堆棧,但是一個有界的堆棧只能用來代替傳統的堆棧,如果它有足夠大的限制。我是否糾正這個想法? liskov屬性是否正確? 謝謝。