2012-02-23 79 views
0

試圖找出設計分層結構的最佳方法。一個例子就是體育聯盟結構。分層設計所需的建議

冰球聯賽有兩個會議A和B.

會議A有分歧東,西

會議B有師北,南,東,西。

團隊可以按部門或會議顯示。

實際上只有一個聯盟,它可能有多個會議,每個會議都有多個部門。每個人的大小可能不同。主要關心的是當我需要查詢時。例如,佈局結構的好方法是什麼,這樣我就可以取得部門中的所有團隊,會議中的所有團隊或其他團隊部門或會議中的所有團隊,而不會過於繁瑣。

任何幫助,非常感謝。 :)

回答

0

真的有兩種方法可以採取。其一是「純粹」的設計,你實際上有一個層次:

League hasA collection of Conferences 
Conference hasA collection of Divisions 
Division has a collection of Teams 

你的聯賽則需要通過法司,會議或全部給球隊的集合。根據你需要做的事情,也許你只有聯盟提供迭代器而不是集合。

第二種方法是平的或者更databasey:

League hasA collection of Teams 
Team hasA Conference 
Team hasA Division 

通過這種方法,你可以輕鬆地操縱根據司和會議團隊和過濾器,但它是很難做的東西爲司或會議(你必須通過所有的團隊來找出哪些部門存在)

這一切都歸結到手頭的問題。我的主要問題是:

  • 你與數據有什麼關係?
    • 你需要彙報會議或分部嗎?
    • 您是否需要在層次結構中輸出?
  • 輸入數據是否使一種方法更容易?
    • 如果輸入是一個平坦的數據庫表,平坦地存儲它可能是一件容易的事!

我想不出一個很好的理由不使用hierarhy方法。

0

我不知道你正在使用哪種語言,但假設你可以使用多態和類,我會說使用設計模式,如Composite Pattern

設計你「複合」作爲會議類和「葉」作爲devision類。

這個想法是讓會議類能夠添加devisions到一個孩子列表,然後從調用一個函數,能夠對這些孩子執行任何必需的操作。每個會議都可以有其他的會議,因此可以在不同的會議和他們的設計之間進行溝通。

這一切都取決於你如何編碼它以及你需要執行什麼操作。