《大話設計模式》 筆記 策略模式

2021-09-30 04:44:31 字數 1285 閱讀 8169

一、概念

策略模式(strategy):它定義了一系列的演算法,並將每乙個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法的變化不會影響到使用演算法的客戶。

類圖如圖:

優點:1、 簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。

2、 避免程式中使用多重條件轉移語句,使系統更靈活,並易於擴充套件。

3、 遵守大部分grasp原則和常用設計原則,高內聚、低偶合。

缺點:1、 因為每個具體策略類都會產生乙個新類,所以會增加系統需要維護的類的數量。

2、 在基本的策略模式中,選擇所用具體實現的職責由客戶端物件承擔,並轉給策略模式的istrategy物件。(這本身沒有解除客戶端需要選擇判斷的壓力,而策略模式與簡單工廠模式結合後,選擇具體實現的職責也可以由istrategy來承擔,這就最大化的減輕了客戶端的壓力。)

二、策略模式的**實現

以飛機為例

首先定義乙個飛共有的功能方法類

airplane.cs

2.定義一架攻擊機類,它將繼承飛機共有的功能方法:

f12.cs

3. 定義一架空中加油機,它也將繼承飛機共有的功能方法:

airplaneaddoil.cs

大家都知道戰鬥機是具備攻擊能力的,但空中加油機是沒有這個功能的。

於是得用策略模式定義乙個介面

istrategy.cs

增加乙個攻擊類的子類去實現攻擊功能。

attack.cs

客戶端實現:

如果再增加新的攻擊機,只須增加新型攻擊機類.

f22.cs

這時的只須在客戶端**增加f22的呼叫就行了

總結:這個只是簡單的說明策略模式的使用,想想看,如果在增加新型飛彈攻擊功能該如果在策略模式裡實現。

那就只須增加乙個新型飛彈攻擊類去實現攻擊介面就行了。在客戶端就只須直接呼叫這個功能就行。

大話設計模式筆記(二) 策略模式

商場收銀軟體,營業員根據客戶所購買的商品單價和數量,向客戶收費。普通實現 created by callmedevil on 2019 6 1.public class normaltest 計算總價 param price 單價 param num 數量 return private static...

大話設計模式 策略模式

前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...

大話設計模式 策略模式

前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...