組合模式
1、組合模式
組合模式屬於物件中的結構模式,有時又叫做部分-整體模式。合成模式是將部分和整體的關係用樹結構表示出來。
2、結構
以上類圖結構涉及三種角色:
抽象構件角色:這是乙個抽象角色,它給參加組合的物件規定乙個介面,這個角色給出共有的介面和預設行為。
樹葉構件角色:代表參加組合的樹葉物件。
樹枝構件角色:代表參加組合的有子物件的物件,並給出樹枝構件物件的行為。
3、**
以下是描述乙個公司層次結構的例項
抽象構件角色company
public abstract class company
public company(string name, int dep)
private string name;
private int dep = 0;
public company add(company company)
public company remove(company company)
public void operate()
system.out.println(this.name);
} public string getname()
public void setname(string name)
public int getdep()
public void setdep(int dep)
public abstract listgetcomposite();
}
樹葉構件角色leafcompany
public class leafcompany extends company
public leafcompany(string name, int dep)
@override
public listgetcomposite()
}
樹枝就、構件角色compositecompany
public class compositecompany extends company
public compositecompany(string name)
@override
public company add(company company)
composite.add(company);
return super.add(company);
} @override
public company remove(company company)
@override
public void operate()
private void display(company company)
} }private void out(company company)
system.out.println(company.getname()+"("+company.getdep()+")");
} public listgetcomposite()
public void setcomposite(listcomposite)
}
客戶端測試程式client
public class client
}
4、總結
組合模式解耦了客戶程式與複雜元素內部結構,從而使客戶程式可以向處理簡單元素一樣來處理複雜元素。
如果你想要建立層次結構,並可以在其中以相同的方式對待所有元素,那麼組合模式就是最理想的選擇。本章使用了乙個檔案系統的例子來舉例說明了組合模式的用途。在這個例子中,檔案和目錄都執行相同的介面,這是組合模式的關鍵。通過執行相同的介面,你就可以用相同的方式對待檔案和目錄,從而實現將檔案或者目錄儲存為目錄的子級元素。
設計模式8 組合模式
組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構 無論是檔案或者是資料夾,常用操作都是一致的,比如 複製 貼上 剪下 刪除 所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,...
設計模式 (8)組合模式
組合模式 組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承與乙個公共的抽象類,這樣,外部使用它們時是一致的,不用管是整體還是部分,使用乙個方法即可遍歷整體中的所有的部分。就像乙個樹形結構一樣。適用性 常用於組織結構,產品結構之類的整體和部...
12 組合模式
1.說明 請參見本文第一章 2.組合模式說明 組合模式 將物件組合成樹形介面以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件具有一致性。為了保持整體和區域性的一致性,整體和區域性具有相同的介面,從而避免判斷該節點是整體還是區域性。介面可以實現為空。使用範圍 在需求中體現部分與整...