我在想,如果一個類只會在另一個類中實例化,那麼就可以使用它嵌套在該類中。我認爲這會幫助我們設計出好的東西。當我看着我的項目時,我幾乎從未見過這樣的嵌套結構。但如果我嘗試嵌套類,所以這次我的腦海裏出現了另一個問題。例如何處以及如何使用嵌套類?
我有Board類,移動類如ShortCastle,LongCastle,EnPassant,Promote和Pieces,如典當,女王,騎士等。所以很顯然,Board類將實例化Piece類,並且Piece類將實例化Move類。對於一個好的設計,推動移動類應該是由Pawn嵌套,因爲只有棋子才能提升自己。短和長的城堡應該是King的嵌套,因爲只有King可以有這種類型的移動。
試圖把所有Piece類放到Board類中看起來不是很好的設計,因爲8-9類將會在Board類內部,它會真的討厭一個Board類文件太大而難以閱讀。我更喜歡每個在另一個文件中的單個類。好,我們可以創建部分董事會類但仍然不討厭8-9部分董事會類文件將舉行每一類課?不讓它們嵌套更好嗎?關於Pieces相同創建另一個部分Piece文件僅用於另一個Move類類?如果嵌套類只佔用很小的空間,所以它不會有任何問題,但如果它需要很多方法?
你用這個設計限制了錯誤的可能性。沒有其他的小塊不能創建這樣的動作,甚至是錯誤的。這種設計不會讓它。我錯了嗎? – Freshblood 2010-06-30 06:31:15
深度嵌套類限制了它們的作用域(這在某些場景中可能是一個有用的架構約束),但是在項目早期就會遇到很多複雜性。我建議做「最簡單的工作」,然後在需要時重構爲更復雜的設計。然後,如果你想約束某些類可以從哪裏實例化,你可以將你的解決方案分解成不同的程序集(通過創建「類庫」項目)。 祝你好運! =) – 2010-07-06 17:03:23