設計模式 組合模式

2021-10-06 16:28:12 字數 2111 閱讀 4177

5.2安全方式

6.**模板(使用透明方式)

軟體在某些情況下,客戶**過多地依賴於物件容器複雜的內部實現結構,物件容器內部實現結構(而非抽象介面)的變化將引起客戶**的頻繁變化,帶來了**的維護性、擴充套件性等弊端。

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

出現樹形結構的地方:如檔案管理系統、辦公管理系統(如圖)。

兩者各有好處,視情況而定

在component中 宣告所有管理子物件的方法,實現component介面的所有子類都具各add和remove以及display等方法。

5.1.1 優點

葉節點和枝節點對於外界沒有區別,它們具備完全一致的行為介面,客戶端可以同等的對待所有的物件。

5.1.2 缺點:

不夠安全,因為樹葉類物件和合成類物件在本質.上是有區別的。樹葉類物件不可能有下乙個層次的物件,因此add()、remove()以及display()方法沒有意義。

在component中不去宣告add和remove方法,那麼子類的leaf也就不需要去實現它,而是在合成類composite (不是component類)宣告所有用來管理子類物件的方法。

5.2.1 優點

這樣的做法是安全的做法,樹葉型別的物件根本就沒有管理子類物件的方法,因此,如果客戶端對樹葉類物件使用這些方法時,程式會在編譯時期出錯。

5.2.2 缺點

不夠透明,樹葉類和合成類將具有不同的介面,客戶端的呼叫雪要做相應的判斷,帶來了不便。

//節點抽象類

abstract

class

component

public

abstract

void

add(component c)

;public

abstract

void

remove

(component c)

;public

abstract

void

display

(int depth)

;}

//葉子節點

class

leaf

extends

component

@override

public

void

add(component c)

@override

public

void

remove

(component c)

@override

public

void

display

(int depth)

}

//分支節點

class

composite

extends

component

@override

public

void

add(component c)

@override

public

void

remove

(component c)

@override

public

void

display

(int depth)

}}

//客戶端**

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

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

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

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

設計模式 組合設計模式

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