組合模式就是將對象組合成樹形結構以表示”部分-整體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。組合模式的核心包括抽象構件、葉子構件和容器構件。抽象構件角色:定義了葉子構件和容器構件的共同點。葉子構件角色:無子節點。容器構件角色:有容器特征,可以包含子節點。看了下面的圖大家就明白什么是容器和葉子了。
組合模式的適用性 1.你想表示對象的部分-整體層次結構。 2.你希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。 組合模式的工作流程 組合模式為處理樹形結構提供了解決方案,描述了如何將容器和葉子進行遞歸組合,使得用戶在使用時可以一致性的對待容器和葉子。 當容器對象的指定方法被調用時,將遍歷整個樹形結構,尋找包含這個方法的成員并調用執行。其中使用的就是遞歸調用的基址對整個樹形結構進行處理的。 我們手機或電腦上面的文件夾就是最好的案例。
下面我們就以文件夾和圖片來實現一個案例。
測試代碼
Folder photoFolder; File photoFile1; File photoFile2; File photoFile3; File photoFile4; File photoFile5; File photoFile6; photoFolder = new Folder("圖片"); photoFile1 = new PhotoFile("file1.png"); photoFile2 = new PhotoFile("file2.png"); photoFile3 = new PhotoFile("file3.png"); photoFile4 = new PhotoFile("file4.png"); photoFile5 = new PhotoFile("file5.png"); photoFile6 = new PhotoFile("file6.png"); photoFolder.add(photoFile1); photoFolder.add(photoFile2); photoFolder.add(photoFile3); photoFolder.add(photoFile4); photoFolder.add(photoFile5); photoFolder.add(photoFile6); String name = "file6.png"; photoFolder.findPhoto(name);運行效果
組合模式到此已經結束,如有問題還請留言。
新聞熱點
疑難解答