大話設計模式 組合模式

2021-07-09 14:44:09 字數 1727 閱讀 2488

前言

在 軟體開發過程中,我們經常會遇到處理簡單物件和復合物件的情況,例如對作業系統中目錄的處理就是這樣的乙個例子,因為目錄可以包括單獨的檔案,也可以包括 資料夾,資料夾又是由檔案組成的,由於簡單物件和復合物件在功能上區別,導致在操作過程中必須區分簡單物件和復合物件,這樣就會導致客戶呼叫帶來不必要的 麻煩,然而作為客戶,它們希望能夠始終一致地對待簡單物件和復合物件。然而組合模式就是解決這樣的問題。下面讓我們看看組合模式是怎樣解決這個問題的。

詳細介紹

2.1 組合模式的定義

組合模式允許你將物件組合成樹形結構來表現」部分-整體「的層次結構,使得客戶以一致的方式處理單個物件以及物件的組合。下面我們用繪製的例子來詳細介紹組合模式,圖形可以由一些基本圖形元素組成(如直線,圓等),也可以由一些複雜圖形組成(由基本圖形元素組合而成),為了使客戶對基本圖形和複雜圖形的呼叫保持一致,我們使用組合模式來達到整個目的。

組合模式實現的最關鍵的地方是——簡單物件和復合物件必須實現相同的介面。這就是組合模式能夠將組合物件和簡單物件進行一致處理的原因。

2.2 組合模式的實現

namespace 組合模式

}abstract class company

public abstract void add(company c);//增加

public abstract void remove(company c);//移除

public abstract void display(int depth);//顯示

public abstract void lineofduty();//履行職責

}class concretecompany : company

public override void add(company c)

public override void remove(company c)

public override void display(int depth)

}//履行職責

public override void lineofduty()}}

//人力資源部

class hrdepartment : company

public override void add(company c)

public override void remove(company c)

public override void display(int depth)

public override void lineofduty()

員工招聘培訓管理", name);}}

//財務部

class financedepartment : company

public override void add(company c)

public override void remove(company c)

public override void display(int depth)

public override void lineofduty()

公司財務收支管理", name);}}

組合模式允許定義簡單物件和更加複雜的元件物件的類層次結構,這樣這些物件就能夠以相同的方式呈獻給客戶端程式。基於這一簡易性,客戶端就可以更加價單,因為節點和葉子可以被以同樣的方式處理。

大話設計模式 組合模式

abstract class component public abstract function add component c public abstract function remove component c public abstract function display depth 葉...

大話設計模式 組合模式

一 組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。二 示例 data public abstract class company public abstract void add company c public abstrac...

大話設計模式之組合模式

將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件好人組合物件的使用具有一致性。component為組合中的物件宣告介面,在適當情況下,實現所有類共有介面的預設行為。宣告乙個藉口用於訪問和管理component的子部件 abstractclass component 使...