設計模式學習筆記 策略模式

2021-06-20 10:53:05 字數 774 閱讀 7741

我覺得策略模式與工廠方法模式極其相似!

策略模式:

工廠方法模式:

如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了:

策略模式:

context context = new context();

abstractstrategy strategy;

//採用哪種策略,由呼叫方決定

strategy = new concretestrategya();

context.setstrategy(strategy);

context.algorithm();

工廠方法模式:

ifactory factory;

//採用哪個工廠,由呼叫方法決定

factory = new concretefactorya();

iproduct product = factory.create();

策略模式裡有個上下文類,與工廠類非常像。在應用這兩種模式的**裡,都是由呼叫方決定採用哪種策略,或者應用哪個工廠。策略**和工廠**本身,符合開閉原則,要改就改呼叫方。當然,這也可以看成是缺點,因為呼叫方要對策略和工廠非常了解。

設計模式學習筆記 策略模式

問題 商場收銀軟體,根據單價和數量,得到總價。設計思路 兩個輸入框,分別代表單價和數量,乙個下拉框,選項有 正常,打折,滿減等演算法 商場有時需要正常收費,有時打折扣,有時滿300送100.下面是簡單工廠模式下 所有演算法的父類抽象類cashsuper public abstract class c...

設計模式學習筆記 策略模式

考慮這樣乙個場景。我們要計算兩個數的值,但是演算法不確定,可以是加減乘除的任意一種,甚至可以是加減乘除任意組合計算。就實現方式來說可以有多種。比如我可以通過if else 繼續演算法控制 class context public function calculate flag else if fla...

二 策略模式 設計模式學習筆記

1 抽象策略角色 策略類,通常由乙個介面或者抽象類實現。定義了乙個公共介面,各種不同的演算法以不同的方式實現這個介面,context使用這個介面呼叫不同的演算法,一般使用介面或抽象類實現 2 具體策略角色 包裝了相關的演算法和行為。實現了strategy定義的介面,提供具體的演算法實現 3 環境角色...