設計模式 組合模式

2022-09-19 17:15:14 字數 1962 閱讀 2154

​ 組合(composite pattern)模式的定義:有時又叫作整體-部分(part-whole)模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示「整體-部分」的關係,使使用者對單個物件和組合物件具有一致的訪問性,屬於結構型設計模式。

​ 在組合模式中,整個樹形結構中的物件都屬於同一種型別,帶來的好處就是使用者不需要辨別是樹枝節點還是葉子節點,可以直接進行操作,給使用者的使用帶來極大的便利。

組合模式的主要優點有:

組合模式使得客戶端**可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端**;

更容易在組合體內加入新的物件,客戶端不會因為加入了新的物件而更改源**,滿足「開閉原則」;

其主要缺點是:

設計較複雜,客戶端需要花更多時間理清類之間的層次關係;

不容易限制容器中的構件;

不容易用繼承的方法來增加構件的新功能;

組合模式包含以下主要角色。

抽象構件(component)角色:它的主要作用是為樹葉構件和樹枝構件宣告公共介面,並實現它們的預設行為。在透明式的組合模式中抽象構件還宣告訪問和管理子類的介面;在安全式的組合模式中不宣告訪問和管理子類的介面,管理工作由樹枝構件完成。(總的抽象類或介面,定義一些通用的方法,比如新增、刪除)

樹葉構件(leaf)角色:是組合中的葉節點物件,它沒有子節點,用於繼承或實現抽象構件。

樹枝構件(composite)角色 / 中間構件:是組合中的分支節點物件,它有子節點,用於繼承和實現抽象構件。它的主要作用是儲存和管理子部件,通常包含 add()、remove() 等方法。

組合模式分為透明式的組合模式和安全式的組合模式。

透明式

public abstract class component 

public component(string name)

void remove(component component)

abstract void print();

public string getname()

public void setname(string name)

}

public class unitcomposite extends component

listlist = new arraylist();

@override

public string getname()

@override

public void setname(string name)

@override

void add(component component)

@override

void remove(component component)

@override

void print()

}

public class deptleaf extends component

@override

public string getname()

@override

public void setname(string name)

@override

void print()

}

public class client 

}

安全式

類似透明式,兩個類有點小變動。

public abstract class component 

abstract void print();

public string getname()

public void setname(string name)

}

public class client 

}

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

設計模式 組合模式 組合模式使用

目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...

設計模式 組合設計模式

組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...