大話設計模式之組合模式

2021-07-02 05:14:10 字數 2474 閱讀 8422

將物件組合成樹形結構以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件好人組合物件的使用具有一致性。

//component為組合中的物件宣告介面,在適當情況下,實現所有類共有介面的預設行為。

//宣告乙個藉口用於訪問和管理component的子部件

abstractclass component

//使用add和remove來提供增加或刪除樹葉或樹枝的功能

public abstract void add(component c);

public abstract void remove(component c);

public abstract void display(int depth);};

//leaf在組合中表示葉節點物件,葉節點沒有子節點

class leaf:component

public override void add(component c)

public override void remove(component c)

public override void display(int depth)

}; //枝節點,儲存子部件

class composite : component

public override void add(component c)

public abstract void remove(component c)

public abstract void display(int depth)

}};

//客戶端

void main()

執行結果如下:

在葉節點中實現add和remove功能是沒有意義的,我們可以在component中去除這兩個功能,而在composite中單獨新增這兩個功能,這叫安全模式,當然這樣子有好也有不好的地方。

何時使用?

當你發現需求中是體現部分與整體層次的結構時候,以及你希望使用者可以忽略組合物件與單個物件的不同,統一的使用組合結構中的所有物件時。

下面,給出乙個具體的例子,關於總公司、公司部分、分公司的公司管理系統:

public abstract void duty(company c); //職責};

class concretcompany : company

public abstract void add(company c)

public abstract void remove(company c)

public abstract void display(int depth)

}public abstract void duty(company c)

}};

//人力資源部

class hrdep :company

public abstract void add(company c)

{}public abstract void remove(company c)

{}public abstract void display(int depth)

public abstract void duty(company c)

招聘", name);

}};

//其他部門

class otdep :company

public abstract void add(company c)

{}public abstract void remove(company c)

{}public abstract void display(int depth)

public abstract void duty(company c)

其他", name);

}};

void main()

組合模式這樣就定義了包含公司的部門和分公司。

基本物件可以被組合成更複雜的組合物件,而這個組合物件又可以被組合,不斷遞迴下去,客戶**中,任何用到基本物件的地方都可以使用組合物件了

讓客戶可以一致的使用組合結構和單個物件

大話設計模式 組合模式

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...