天天看點

設計模式及适用場景

一、指令模式

定義:

指令将一個請求封裝為一個對象,進而使得可以使用不同的請求對客戶進行參數化,對請求排隊或記錄請求日志,以及可撤銷的操作。

适用情況:

1、抽象出待執行的動作以參數化某對象,此模式是過程語言中的回調機制的一個面向對象的替代方法;

2、在不同的時刻指定、排列和執行請求;

3、支援取消操作;

4、支援修改日志,這樣當系統崩潰時,這些修改可以重新被做一遍;

5、用建構在原語操作上的高層操作構造一個系統;

二、責任鍊模式

責任鍊是多個對象都有機會處理請求,進而避免請求的發送者和接受者之間的耦合關系。講這些對象連成一條鍊,并沿着這條鍊傳遞改請求,知道有一個對象處理它為止。

1、有多個的對象可以處理一個請求,哪個對象處理該請求在運作時刻自動确定;

2、在不明确指定接受者的情況下,向多個對象中的一個送出一個請求;

3、可處理一個請求的對象集合應被動态指定;

三、觀察者模式

觀察者模式定義對象間的一種一對多的以來關系,當一個對象的狀态發生改變時,所有依賴于它的對象都得到通知,并自動更新。

1、當一個抽象模型有兩個方面,其中一個方面依賴于另一個方面,将這兩者封裝在獨立地對象中以使他們可以各自獨立地改變和複用;

2、當對一個對象的改變同時需要改變其他對象,而不知道具體有多少個對象待改變時;

3、當一個對象必須通知其他對象,他又不能假定其他對象是誰,即:不希望這些對象是緊耦合;

四、政策模式

政策定義一系列的算法,把它們一個個封裝起來,并且使他們可以互相替換。此模式使得算法可以獨立于使用他們的客戶而變化。

1、許多相關的類僅僅是行為有異,政策提供了一種用多個行為中的一個行為來配置一個類的方法;

2、需要使用一個算法的不同變體。例如,定義一些反應不同空間的空間/時間權衡的算法,當這些變體實作為一個算法的類層次時,可以使用政策模式;

3、算法使用客戶不應該知道的資料。可以使用政策模式以避免暴露複雜的、與算法相關的資料結構;

4、一個類定義了多種行為,并且這些行為在這個類的操作中以多個條件語句的形式出現,将相關的條件分支移入他們各自的Strategy類中

繼續閱讀