組合模式 詳解

2021-07-14 15:37:37 字數 1636 閱讀 2857

將物件組合成樹形結構以表示「部分-整體」的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性;

結構型模式

從網上找到的例圖

/**

* created by george on 16/7/9.

*/// 抽象化構件角色

var commponent = function

() ;

this.remove = function

() ;

this.getchild = function

() ;

};// 部分類構件角色

var leaf = function

() ;

leaf.prototype = new commponent();

leaf.prototype.add = function

() ;

leaf.prototype.remove = function

() ;

leaf.prototype.getchild = function

() ;

// 組合類構件角色

var composite = function

() ;

composite.prototype = new commponent();

composite.prototype.add = function

(c) ;

composite.prototype.remove = function

(c) ;

composite.prototype.getchild = function

() };

// 主要實現

var root = new composite();

root.name = "root";

var leftroot = new composite();

leftroot.name = "leftroot";

var rightroot = new composite();

rightroot.name = "rightroot";

var leftnode = new leaf();

leftnode.name = "leftleaf";

var rightnode = new leaf();

rightnode.name = "rightleaf";

leftroot.add(leftnode);

leftroot.add(rightnode);

rightroot.add(leftnode);

rightroot.add(rightnode);

root.add(leftroot);

root.add(rightroot);

root.getchild();

呼叫簡單,客戶端可以一致的使用組合結構或其中某個物件,使用者可以忽略單個物件還是組合結構;

容易在組合體內加入物件元件,客戶端不必因為加入了新的物件元件而更改**;

注意的是

1.部分元件和整體元件都是實現類,而不是介面,違反了依賴倒置原則;

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

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

設計模式詳解(十) 組合模式

設計出省 市 區機構的區域程式 省市區結構如下 安徽省 合肥市 肥東縣 蕪湖市 三山區 浙江省 杭州市 濱江區 溫州市 永嘉縣 江蘇省 鎮江市 京口區 定義省市區 縣三個類,省包含市,市包含區 縣。客戶端測試 public static void main string args 輸出 安徽省 合肥...

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

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