設計模式 10 介面卡模式 組合模式

2021-10-07 21:24:21 字數 1983 閱讀 1474

組合模式:它在我們樹型結構的問題中,模糊了簡單元素和複雜元素的概念,客戶程式可以像處理簡單元素一樣來處理複雜元素,從而使得客戶程式與複雜元素的內部結構解耦。

組合模式(又稱「部分-整體」模式)是一種結構型設計模式。組合模式的思想是:將物件組合成樹形結構以表示「部分-整體」的層次結構,使得使用者對單個物件和組合物件的使用具有一致性( 統計介面--不同實現 --- 對外表現一致[無差異呼叫] )

比如以下的商品類別樹 

抽象介面:抽象的元件物件,為組合中的物件宣告介面,實現介面的預設行為

/**

* 抽象的元件物件,為組合中的物件宣告介面,實現介面的預設行為

*/public abstract class a1_component

public void removechild(a1_component child)

public a1_component getchildren(int index)

}

樹幹節點:組合類的定義

/**

* 枝幹節點 : 組合類的定義

*/public class a2_composite extends a1_component

/*** 向組合物件中新增元件物件

*/public void addchild(a1_component child)

childcomponents.add(child);

}/**

* 從組合物件中移除元件物件

*/public void removechild(a1_component child)

}/**

* 根據索引獲取組合物件中對應的元件物件

*/public a1_component getchildren(int index)

}return null;

}/**

* 此處用於輸出元件的樹形結構,通常在裡面需要實現遞迴的呼叫

*/@override

public void operation(string prestr) }}

}

葉子節點:

/**

* 葉子節點

*/public class a3_leaf extends a1_component

/*** 此處用於輸出元件的樹形結構

* @param prestr

*/@override

public void operation(string prestr)

}

客戶端呼叫:

/**

* 客戶端呼叫

*/public class a4_client

}

呼叫結果:

+服裝

+**-西服

-夾克-襯衫

+**-裙子

-套裝+母嬰

-孕婦裝

-嬰兒裝

-鞋襪

組合模式解耦了客戶程式與複雜元素內部結構,從而使客戶程式可以像處理簡單元素一樣來處理複雜元素

組合模式讓你可以優化處理遞迴或分級資料結構。如果想要建立層次結構,並可以在其中以相同的方式對待所有元素,那麼組合模式就是最理想的選擇。

優點:無需關係處理的單個物件,還是組合的物件容器,實現容器之間的解耦合當有新部件時容易新增進來

設計模式整理 10 介面卡模式

學習 android 原始碼設計模式解析與實踐 系列筆記 經常會碰到兩個沒有關係的型別之間需要進行互動,但是雙方又都不想做出修改,這種尷尬的情況下,可以增加乙個 adapter 的角色,進行兩個不同型別的介面的相容。例如 讀卡器是作為記憶體卡和筆記本之間的介面卡。將記憶體卡插入讀卡器,再將讀卡器插入...

設計模式 介面卡模式

01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...

設計模式 介面卡模式

結構性模式 處理多個類組合的關係。動機 一些現存在的物件放在新環境中,新環境要求的 介面是這個現存的物件不滿足的。定義 介面卡模式將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作 它包括類介面卡和物件介面卡。物件介面卡 include includ...