1. 程式人生 > >APP開發實戰45-設計模式介紹3

APP開發實戰45-設計模式介紹3

13.3.5策略模式

策略模式定義一系列的演算法,並把每一個演算法封裝起來, 且使它們可相互替換,使得演算法的變化可獨立於使用它的客戶。

此模式的使用場景: 

(1)針對同一類問題的多種處理方式,僅僅是具體行為有差別時。

(2)需要安全地封裝多種同一型別操作時。

(3)出現同一抽象類有多個子類,而又需要使用if-else或switch-case來選擇具體子類時。

    如各類列表的排序功能,及計算各類商品的費用時(不同商品的單價和總價的計算方式可能不同),可以使用策略模式。

13.3.6狀態模式

狀態模式允許一個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它所屬的類。

狀態模式將每一個條件分支放入一個獨立的類中,這使得可以根據物件自身的情況將物件狀態作為一個物件,這一物件可以不依賴於其他物件而獨立變化,通過多型來去除過多的、重複的if-else等分支語句。

此模式的使用場景: 

(1)一個物件的行為取決於它的狀態,且它必須在執行時根據狀態改變它的行為。

(2)程式碼中包含大量與物件狀態有關的條件語句,且這些分支依賴於改物件的狀態。

(3)出現同一抽象類有多個子類,而又需要使用if-else或switch-case來選擇具體子類時。

如電商APP的訂單物件有多種狀態,及使用者登入物件有已登入和未登入兩種狀態,都可使用狀態模式。

13.3.7命令模式

命令模式將一個請求封裝為一個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可取消的操作。

此模式的使用場景:

(1)需要抽象出待執行的動作,然後以引數的形式提供出來。

(2)需要支援取消操作。

(3)支援修改日誌功能和事務操作。

如遊戲開發和選單功能開發,都可使用命令模式。

13.3.8觀察者模式

觀察者模式定義物件間的一種一對多的依賴關係,以便當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動重新整理。

此模式的使用場景:

(1)有關聯行為的地方。

(2)事件多級觸發的地方。

(3)跨系統的訊息交換,如訊息佇列和事件匯流排的處理機制。

如Android的BroadcastReceiver元件功能、GUI系統和訂閱-釋出系統,都是使用觀察者模式。

參考:《Android原始碼設計模式解析與實戰》