1. 程式人生 > >設計模式學習心得<組合模式 Composite>

設計模式學習心得<組合模式 Composite>

樹形結構 樹葉 組合模式 操作數 方式 nta 屬於 包含 接口

組合模式(Composite Pattern),又叫部分整體模式,是用於把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象,用來表示部分以及整體層次。這種類型的設計模式屬於結構型模式,它創建了對象組的樹形結構。

這種模式創建了一個包含自己對象組的類。該類提供了修改相同對象組的方式。

概述


  • 意圖
    將對象組合成樹形結構以表示"部分-整體"的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。

  • 主要解決
    它在我們樹型結構的問題中,模糊了簡單元素和復雜元素的概念,客戶程序可以向處理簡單元素一樣來處理復雜元素,從而使得客戶程序與復雜元素的內部結構解耦。

  • 何時使用
  1. 想表示對象的部分-整體層次結構(樹形結構)。
  2. 希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。
  • 如何解決
    樹枝和葉子實現統一接口,樹枝內部組合該接口。

  • 關鍵代碼
    樹枝內部組合該接口,並且含有內部屬性 List,裏面放 Component。

  • 應用實例
  1. 算術表達式包括操作數、操作符和另一個操作數,其中,另一個操作符也可以是操作數、操作符和另一個操作數。
  2. 在 JAVA AWT 和 SWING 中,對於 Button 和 Checkbox 是樹葉,Container 是樹枝。
  • 優點
  1. 高層模塊調用簡單。
  2. 節點自由增加。
  • 缺點
    在使用組合模式時,其葉子和樹枝的聲明都是實現類,而不是接口,違反了依賴倒置原則。

  • 使用場景
    部分、整體場景,如樹形菜單,文件、文件夾的管理。

  • 註意事項
    定義時為具體類。

設計模式學習心得<組合模式 Composite>