策略模式的使用場景:策略模式是用來封裝演算法的,單在實踐中,可以用它來封裝幾乎任何型別的規則,只要需求中有需要在不同的時間、不同的物件等等的同一屬性需要運用不同的規則時就可以考慮採用策略模式來處理這種變化的可能性;
案例1再定義乙個context聯絡上下文的類 在客戶端通過context 物件和具體的需求呼叫到不同的演算法(如果有新的需求演算法直接在抽象介面中增加乙個演算法實現子類 再稍微改一下客戶端**即可實現 充分體現**的可擴充套件性以及解耦性 為**的維護帶來了極大的便利)
案例2用策略模式實現乙個簡單的收銀台直接上**
首先建立乙個strategy演算法抽象類介面(具體演算法在實現類中進行完成)
/**
*@author
wangjikui
* 抽象演算法類 */
publicinte***ce
strategy
實現具體演算法類
/**
* 用途:折扣演算法
*@param
unitprice 單價
*@param
number 數量
*@param
discount 折扣
*@return*/
class
concreteaimplements
strategy }
/*** 用途:**滿**-**
*@param
unitprice 單價
*@param
number 數量
*@param
discount 折扣
*@return*/
class
concretebimplements
strategy
@override
public
double strategy(double
unitprice
,double
number
,double
discount)
return
total;
} }
/**
* 用途:在此基礎上再打折
*@param
unitprice 單價
*@param
number 數量
*@param
discount 折扣
*@return*/
class
concretecimplements
strategy
@override
public
double strategy(double
unitprice
,double
number
,double
discount)
} 3.聯絡上下文類(根據客戶端條件獲取到具體演算法)
publicclass
contextone }
//獲取總金額
public
double getprice(double
unitprice
,double
number
,double
discount)
} 4.客戶端**
publicclass
clientmoney }
注:以上**是簡單工廠與策略模式的結合使用
總結一句:策略模式是一種定義一系列演算法的方法,從概念上來看這些演算法完成的都是相同的工作,只是實現不同,它可以使用相同的方式呼叫所有的演算法,減少各種演算法類和使用演算法類之間的耦合
學習如逆水行舟,不進則退!!祝願有夢想者終能實現!!
設計模式之策略模式
include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...
設計模式之 策略模式
策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...
設計模式之策略模式
何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...