一、定義
策略模式(Strategy Pattern)
針對一組算法,將每一個算法封裝到具有共同接口的獨立類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。
二、分析
-
策略模式主要針對的是一組可以相互替換的算法,我們單獨把這些算法封裝起來,讓他們實現同一個接口,在使用策略時傳入實現的接口類,這樣我們刪除和添加策略時就不用修改到客戶端。
-
在策略模式中,策略是由客戶端決定的,這要求這些可以替換的策略必須是公開的,客戶端也需要知道具體有哪些策略。
-
策略模式和狀態模式原理一致,只是他們的注重點不同,狀態模式主要是切換狀態以達到執行不同的行為,而策略模式則是針對一組可以替換的算法。
-
如果在一個類中,某個行為存在多種實現的方式,並且這些方式可以相互替換,這時我們就可以使用策略模式。
三、類圖

四、使用場景
-
系統需要動態的在幾種算法中選擇一種;
-
類中使用了復雜條件運算符以在同一算法的不同變體中切換;
-
如果算法在上下文的邏輯中不是特別重要,使用該模式能將類的業務邏輯與其算法實現細節隔離開來。
五、代碼實現
我們在買房時需要在進行貸款,銀行一般有2種還款方式分別是 等額本息
和等額本金
,我們可以根據實際需求選擇還款的方法。
下面我們使用策略模式來模擬這兩種還款方式。