設計模式學習心得<組合模式 Composite>
阿新 • • 發佈:2018-07-01
樹形結構 樹葉 組合模式 操作數 方式 nta 屬於 包含 接口
組合模式(Composite Pattern),又叫部分整體模式,是用於把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象,用來表示部分以及整體層次。這種類型的設計模式屬於結構型模式,它創建了對象組的樹形結構。
這種模式創建了一個包含自己對象組的類。該類提供了修改相同對象組的方式。
概述
意圖
將對象組合成樹形結構以表示"部分-整體"的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。主要解決
它在我們樹型結構的問題中,模糊了簡單元素和復雜元素的概念,客戶程序可以向處理簡單元素一樣來處理復雜元素,從而使得客戶程序與復雜元素的內部結構解耦。- 何時使用
- 想表示對象的部分-整體層次結構(樹形結構)。
- 希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。
如何解決
樹枝和葉子實現統一接口,樹枝內部組合該接口。關鍵代碼
樹枝內部組合該接口,並且含有內部屬性 List,裏面放 Component。- 應用實例
- 算術表達式包括操作數、操作符和另一個操作數,其中,另一個操作符也可以是操作數、操作符和另一個操作數。
- 在 JAVA AWT 和 SWING 中,對於 Button 和 Checkbox 是樹葉,Container 是樹枝。
- 優點
- 高層模塊調用簡單。
- 節點自由增加。
缺點
在使用組合模式時,其葉子和樹枝的聲明都是實現類,而不是接口,違反了依賴倒置原則。使用場景
部分、整體場景,如樹形菜單,文件、文件夾的管理。註意事項
定義時為具體類。
設計模式學習心得<組合模式 Composite>