2009-01-17 24 views

回答

2

這取決於對象和它所包含的對象有多緊密耦合。如果您有一個Person類,並且該人擁有零至多個電話號碼,則通常希望PhoneNumber成爲一個單獨的類,因爲許多不同類型的對象都可能具有電話號碼(例如,企業,學校等)。 )。但是,如果對象是自然而然地緊密結合的東西,例如Person對象可以有腳趾,那麼內部類可能是有意義的。

您可能想問自己的一些問題是: 1.聚合對象是否需要訪問包含類的私有片段?如果是這樣,一個內部類是一個很好的選擇。 2.聚合對象是否總是隻屬於一個對象,並且它所屬的對象從不改變?如果不是,那麼你可能不想要一個內部類。 3.聚合對象是否在聚合對象的上下文之外有意義?如果是這樣,它可能不應該是一個內部類。

如果有疑問,通常最好使用單獨定義的類,如果沒有其他原因會導致耦合關閉並縮小源文件。

也並不是說它不一定是一個無論是或事。您始終可以定義一個單獨的類或接口,然後在聚合類中進行子類化/實現。

2

如果聚集的對象是可分離的,即它們可能單獨出現,也可能出現在聚合中,那麼每個對象都有一個單獨的類,並使用類型化的集合來表示聚集。

1

不確定MVC與域聚合有什麼關係,因爲可以在沒有UI的情況下使用後者。

我通常更喜歡將聚合的各個部分分開,因爲這些部分可以具有獨立的商業含義。當外部類必須在內部類之前加載或無法使內部類公開(至少這些內容適用於Java)時,嵌套類纔有意義。