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

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

這種模式建立了一個包含本身對象組的類。該類提供了修改相同對象組的方式。設計

概述


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

  • 主要解決
    它在咱們樹型結構的問題中,模糊了簡單元素和複雜元素的概念,客戶程序能夠向處理簡單元素同樣來處理複雜元素,從而使得客戶程序與複雜元素的內部結構解耦。接口

  • 什麼時候使用
  1. 想表示對象的部分-總體層次結構(樹形結構)。
  2. 但願用戶忽略組合對象與單個對象的不一樣,用戶將統一地使用組合結構中的全部對象。
  • 如何解決
    樹枝和葉子實現統一接口,樹枝內部組合該接口。it

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

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

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

  • 注意事項
    定義時爲具體類。樹形結構

相關文章
相關標籤/搜索