一、指令模式
定義:
指令将一個請求封裝為一個對象,進而使得可以使用不同的請求對客戶進行參數化,對請求排隊或記錄請求日志,以及可撤銷的操作。
适用情況:
1、抽象出待執行的動作以參數化某對象,此模式是過程語言中的回調機制的一個面向對象的替代方法;
2、在不同的時刻指定、排列和執行請求;
3、支援取消操作;
4、支援修改日志,這樣當系統崩潰時,這些修改可以重新被做一遍;
5、用建構在原語操作上的高層操作構造一個系統;
二、責任鍊模式
責任鍊是多個對象都有機會處理請求,進而避免請求的發送者和接受者之間的耦合關系。講這些對象連成一條鍊,并沿着這條鍊傳遞改請求,知道有一個對象處理它為止。
1、有多個的對象可以處理一個請求,哪個對象處理該請求在運作時刻自動确定;
2、在不明确指定接受者的情況下,向多個對象中的一個送出一個請求;
3、可處理一個請求的對象集合應被動态指定;
三、觀察者模式
觀察者模式定義對象間的一種一對多的以來關系,當一個對象的狀态發生改變時,所有依賴于它的對象都得到通知,并自動更新。
1、當一個抽象模型有兩個方面,其中一個方面依賴于另一個方面,将這兩者封裝在獨立地對象中以使他們可以各自獨立地改變和複用;
2、當對一個對象的改變同時需要改變其他對象,而不知道具體有多少個對象待改變時;
3、當一個對象必須通知其他對象,他又不能假定其他對象是誰,即:不希望這些對象是緊耦合;
四、政策模式
政策定義一系列的算法,把它們一個個封裝起來,并且使他們可以互相替換。此模式使得算法可以獨立于使用他們的客戶而變化。
1、許多相關的類僅僅是行為有異,政策提供了一種用多個行為中的一個行為來配置一個類的方法;
2、需要使用一個算法的不同變體。例如,定義一些反應不同空間的空間/時間權衡的算法,當這些變體實作為一個算法的類層次時,可以使用政策模式;
3、算法使用客戶不應該知道的資料。可以使用政策模式以避免暴露複雜的、與算法相關的資料結構;
4、一個類定義了多種行為,并且這些行為在這個類的操作中以多個條件語句的形式出現,将相關的條件分支移入他們各自的Strategy類中