12.1組合模式定義:
組合模式允許你將物件組合成樹型結構來表現「整體
/部分」層次結構。組合能讓客戶以一致的方式處理個別物件以及物件組合。
12.2組合模式
uml類圖:
12.3應用場景:
當我們有數個物件的集合,它們彼此之間有整體
/部分的關係,並且想用一致的方式處理它們時,就可以使用組合模式。例如我們的應用程式選單,每乙個選單項可能是乙個普通選單項,也可能是乙個子選單(裡面又包括幾個選單項)。選單項和子選單之間的關係就是整體和部分的關係,如果我們想對選單項和子選單進行統一的操作,例如顯示每個選單項包括子選單中的選單項的名稱,利用組合模式,我們可以直接發出顯示命令,而不用管是選單項執行還是子選單執行。
12.4組合模式分析與實現(c#描述):
public
abstract
class
menucomponent
//選單項,簡單元件,對應於uml類圖中的leaf。
public
class
menuitem : menucomponent
public
override
void showmenucaption()
public
override
void add(menucomponent aobj_menucomponent)
public
override
void remove(menucomponent aobj_menucomponent)
public
override
menucomponent getmenucomponent(int i)}//
選單,複雜元件,乙個選單又可以包括多個選單項,即選單和選單項是整體和部分的關係,對應於uml類圖中的component。
public
class
menu : menucomponent
public
override
void showmenucaption()
}
public
override
void add(menucomponent aobj_menucomponent)
public
override
void remove(menucomponent aobj_menucomponent)
public
override
menucomponent getmenucomponent(int aint_index)
}
//呼叫類public
class
composite_test
}
將「客戶**與複雜的物件容器結構」解耦是
composite
模式的核心思想,解耦之後,客戶**將與純粹的抽象介面——而非物件容器的復內部實現結構——發生依賴關係,從而更能「應對變化」。
設計模式(十二) 組合模式(內部類)
當發現需求中是體現部分與整體層次結構時,以及你希望使用者可以忽略組合物件與單個物件的不同,統一地使用組合結構中的所有物件時,就應該考慮組合模式。public class paydemo 分店 下面可以有加盟店 public class marketbranch extends market over...
Java設計模式菜鳥系列 十二 組合模式建模與實現
組合模式 composite 組合模式有時又叫部分 整體模式,將物件組合成樹形結構來表示 部分 整體 層次結構。組合模式在處理樹形結構的問題時比較方便。示例 組合模式有時也稱 整合 部分 模式 組合模式在處理樹形結構的問題時比較方便 節點 class treenode 對相關屬性進行封裝 publi...
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...