設計模式--組合模式
樹狀結構在日常生活中十分常見。它有乙個根節點、若干個樹枝節點和若干個葉子節點。組合模式也與樹狀結構有些許聯絡。
一、模式初識
1.什麼是組合模式(composite)?
組合模式(composite)有時又叫部分—整體模式。組合模式將物件組織到數結構中,可以用來描述整體與部分的關係。組合模式可以使客戶端將單純元素與復合元素同等看待。
2.組合模式是怎樣的結構?
直接上uml圖:
①抽象構建(component)角色:這是乙個抽象角色,它給參與組合的物件規定乙個介面。這個角色給出共有介面及預設行為。
②樹葉構件(leaf)角色:代表參加組合的樹葉物件。乙個樹葉物件沒有下級子物件。
③樹葉構件(composite)角色:代表參加組合的有子物件的物件,並給出樹枝構建物件的行為。
3.什麼是物件的樹結構?
乙個樹結構由兩種節點組成:樹枝節點和樹葉節點。樹枝節點可以有子節點,而乙個樹葉節點不可以有子節點。除了根節點外,其它節點有且只有乙個父節點。
二、模式深入
1.組合模式的目的:
讓客戶端以一種統一的方式來操作。
2.物件樹
組合模式會形成樹狀結構,這代表著所有可以使用物件樹來描述或操作的功能,都可以考慮使用組合模式。
3.組合模式的實現根據所實現介面的區別分為兩種形式,分別稱為安全模式和透明模式。
①透明模式:在component裡面宣告所有的用來管理物件的方法。
優點:所有的構件類都有相同的介面。客戶端可以同等的對待所有的物件。
缺點:不夠安全,因為樹葉類物件和合成類物件在本質上是有區別的。add()等方法沒有意義,在編譯時期不會出錯,而會在執行期間才會出錯。
②安全模式:在composite類裡面宣告所有的用來管理子類物件的方法。
優點:安全,程式會在編譯期間出錯。
缺點:不夠透明,樹葉類和合成類將具有不同的介面。
4.使用場景
①需求中是體現部分與整體層次的結構時。
②希望使用者忽略組合物件與單個物件的不同,統一的使用組合結構中的所有物件時。
5.組合模式的優缺點
①優點(1)定義了包含基本物件和組合物件的類層次結構。
(2)統一了組合物件和葉子物件。
(3)簡化了客戶端呼叫。
(4)更容易擴充套件
②缺點(1)很難限制組合中的元件型別
6.本質:統一葉子物件和組合物件
三、模式例項
實現商品類別樹
namespace 組合模式
public abstract void add(component c);
public abstract void remove(component c);
public abstract void display(int depth);
}}using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 組合模式
public override void add(component c)
public override void display(int depth)
public override void remove(component c)
}}using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 組合模式
public override void add(component c)
public override void display(int depth)
}public override void remove(component c)
}}using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 組合模式}}
輸出:
+服裝+**-襯衣
-夾克+**
-裙子-套裝
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
設計模式 組合模式 組合模式使用
目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...
設計模式 組合設計模式
組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...