命令模式:將「請求」封裝成物件,以便使用不同的請求、佇列、日誌來引數化其他物件。命令模式也支援可撤銷的操作。
1、將動作的請求者從動作的執行者物件中解耦出來。
2、在被解耦的兩者之間是通過命令物件進行溝通的,命令物件封裝了接收者和乙個或一組動作。
3、呼叫者通過呼叫命令物件的execute()發出請求,這會使得接收者的動作被呼叫。
4、呼叫者可以接受命令當作引數,甚至在執行時動態的進行。
5、巨集命令是命令的最簡單的延伸,允許呼叫多個命令。
6、命令可以支援撤銷,實現乙個undo()方法來回到execute()被執行前的狀態。
用途:佇列請求,日誌請求,事物系統。
介面卡模式:將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。
1、當需要使用乙個現有的類,而其介面並不符合你的需求時,就使用介面卡模式。
2、介面卡有物件介面卡(使用組合)和類介面卡(使用繼承)
外觀模式:提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。
1、當需要簡化並統一乙個很大的介面或者一群複雜的介面時,使用外觀模式。
2、最少知識原則。
模板方法模式:在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。
1、**復用。
2、抽象類可以定義具體方法、抽象方法、鉤子。
3、鉤子是一種方法,他在抽象類中不做事,或者只做預設的事情,子類可以選擇要不要去覆蓋他。
4、策略模式和模板模式都是封裝演算法,乙個用組合,乙個用繼承。
5、工廠方法是模板方法的一種特殊版本。
迭代器模式:提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露其內部的表示。
組合模式:允許你將物件組合成樹形結構來表現「整體/部分」層次結構,組合能讓客戶以一致的方式處理個別物件以及物件組合。
狀態模式:允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的狀態。
1、狀態模式允許乙個物件基於內部狀態而擁有不同的行為。
2、通過將每個狀態封裝進乙個類,我們把以後需要做的任務改變區域性化了。
**模式:為另乙個物件提供乙個替身或佔位符以訪問這個物件。
1、結構上類似裝飾者模式。
設計模式(3) 工廠設計模式
1.概述 定義乙個用於建立物件的工廠介面,讓工廠子類決定將哪乙個產品類例項化。此模式讓乙個產品類的例項化延遲到工廠子類。2.實現 先定義乙個抽象產品類,包含產品類的公共 再定義乙個抽象工廠類,用乙個方法返回乙個具體的產品類 分別實現具體的產品類,和對應的具體工廠類 3.抽象產品類 internal ...
設計模式3
size large 設計模式3 介面卡模式 介面卡模式就是將兩個不相容的類糾合在一起使用,它需要有被適配者和介面卡兩個身份,由於介面卡類是源的乙個子類,因此可以在介面卡中置換掉源的一些方法。例如windows作業系統中的快捷方式,其實就是乙個介面卡的例子。下面關於介面卡模式的應用 先定義乙個介面 ...
設計模式(3)
oo 中的繼承性思考和說明中的繼承性思考和說明 繼承包含這樣一層義 父類中凡是已經實現好的方法,實際上是在設定規範和契約,雖然它不強制要求所有的子類必須遵循這些契但是如果對些已經實現的方法任意修改,就會對整個繼承體系造成破壞 繼承在給程式設計帶來便利的同時,也帶來了弊端。比如使用繼承會給程式侵入性,...