我正在寫一個C#網絡庫(主要是作爲一個學習鍛鍊,如果有人實際上最終使用它,因爲我」這不是對我來說太重要當然,解決方案已經在那裏了)。設計諮詢 - 當使用「虛擬」和「密封」有效
我對自己的結構非常愉快,到目前爲止,我還提供客戶機/服務器,可以在原始字節通過套接字,或者稍微複雜一點,通過序列化消息對象溝通的幾層。
我遇到的問題是什麼時候我應該聲明方法,屬性或事件sealed
,virtual
或沒有限定符。
我知道所有的這些事情 - sealed
防止一類的繼承,或方法的進一步覆蓋。 virtual
將允許通過方法重寫的多態行爲。
由於我在設計一個類庫,但是,我不確定當使用這些。這是一個可擴展性的問題,我認爲......我提供了一些接口,一個或兩個抽象類,以及我的庫的消費者使用或擴展的一些具體實現,但是我很難決定何時它是一個「好主意」明確禁止派生類或允許覆蓋功能。
在設計我的課程供其他人使用時,請牢記一切指示或建議嗎?
This question和this one有點幫助,因爲是this one,但由於我正在編寫一個可分發的庫,我試圖涵蓋所有的基礎。
(回覆評論說,刪除了!) @(節錄) - 不正確的;您可以將'override'標記爲'sealed'以防止進一步覆蓋。 – 2010-01-07 20:28:43