2017-03-05 49 views
1

我確信已經有一個答案,我只是不知道如何描述我需要做的很好的搜索條件。Java/JavaFX Class由另一個類的實例構成

比方說,我正在制定一個計劃,處理銷售獨特的木材(每個都有一個ID)以及由這些獨特的木材製成的桌子。我有兩個類:WoodPiece和Table。

我應該如何創建Table類,以便它可以將具有獨特木片的Table實例列出來,以便您可以添加和刪除這些片段,直到表格實際製作和銷售。現在我正在考慮讓Table成爲WoodPiece的子類,它只是有一個WoodPieces的ArrayList。

我對Java並不擅長,所以我想確保我有正確的想法,然後再浪費一大堆時間。你知道的任何教程都很棒。我正在爲我的程序使用JavaFx。

+2

我覺得你要捕捉的是一張桌子是一個木板,還有一個桌子有一堆木P。是對的嗎?如果是這樣,谷歌「複合設計模式」。 –

回答

1

我會用構圖構造Table類。一個表不是一個WoodPiece,而是它包含WoodPieces。在未來,一個表可能有桌布或人等

class Table 
{ 
    private Map<String, WoodPiece> woodPieces = new HashMap<>(); 

    public Table() 
    { 
     // constructor 
    } 

    public void addWoodPiece (WoodPiece wp) 
    { 
     woodPieces.put(wp.getID(), wp); 
    } 

    public WoodPiece removeWoodPiece (String id) 
    { 
     return woodPieces.remove(id); 
    } 
} 

注意:我有一張地圖,而不是一個列表,因爲你WoodPiece對象有與它相關聯的唯一ID去了。此外,我認爲你並不關心木頭的順序,因爲一張桌子並沒有木頭的自然排列順序。

進一步閱讀https://en.wikipedia.org/wiki/Composition_over_inheritance

+0

謝謝!我最終不得不使用ObservableList,因爲我不得不將「woodPieces」打印到TableView中,但是這讓我走上了正確的道路。感謝Wiki鏈接! – Chelsea

0

我與你的描述,我表只用獨特的作品製成,是不可能做一個表與其他表明白。所以你只需要添加一個WoodPiece列表到你的表類以及添加和刪除方法。

如果您希望能夠與其他表格創建表格,您應該先創建一個界面(我們稱之爲TablePiece),並且Table和WoodPiece都必須實現它並且Table必須具有TablePiece列表。在下面的圖中,組件將是TablePiece,Leaf WoodPiece和Composite Table。 enter image description here

相關問題