2011-09-29 62 views
-2

對於這個例子,我將使用String類,但它適用於所有的.NET類:我知道有許多圖書館使用開發人員每天需要的方法擴展這些類。像Truncate等擴展方法等非常普遍,所以...誰決定類包含哪些方法?

爲什麼這些對象不首先實現方法?
誰決定該類將包含什麼方法?
他們如何決定?

回答

1

作爲每Riel's heuristics,一個面向對象的系統設計人員應

2.3最小化在一個類的協議的消息的數量。

2.5接口,避免臃腫

2.6接口,避免污染

這一切都使得類易於理解和使用。

更重要的是,

4.6的方法應使用類

這確保了類僅包含最基本的方法的大多數領域。所有其他方法應該優先在其他地方定義。

+0

所以你有字符串,然後RealWorldString? (他開玩笑地說...) –

2

該類的實現者決定它包含的內容。擴展方法通常由實現者以外的開發人員使用。只有實現者知道他們爲什麼選擇導致課堂的決定。

+0

這是一個通用的答案。我的問題是針對.net對象。 –

+3

答案的一般性與問題的一致性。 –

+0

因此,如果我提到一個字符串,這個問題會更好地針對1個.net對象。另外,你只回答我問過的三個問題中的一個。 –

1

保持低數量的方法往往使得它更容易使用該類。

一個很好的規則是讓只能使用公共接口實現的方法創建爲擴展。

我相信如果今天設計的話System.String會小得多。

相關問題