策略模式:
與工廠不同的是,工廠是:
工廠類接受引數,例項化具體的類,返回類
策略模式是:
接受具體的例項化類,僅將方法賦予策略類
策略模式類:
class cashcontext
private cashsuper cs;
public cashcontext(cashsuper csuper)
this.cs = csuper;
public double getresult(double monty)
return cs.acceptcash(monty);
抽象類和實現類:
abstract class cashsuper
public abstract double acceptcash(double money);
//正常收費
class cashnormal : cashsuper
public override double acceptcash(double money)
return money;
//打折收費類
class cashrebhate : cashsuper
private double moneyrebate = 1d;
public cashrebhate(string moneyrebate)
this.moneyrebate = double.parse(moneyrebate );
public override double acceptcash(double money)
return money * moneyrebate;
呼叫策略模式:
private voidbutton1_click(object sender, eventargs e)
cashcontext cc =null;
switch (combobox1.text)
case "正常收費":
cc= new cashcontext(new cashnormal());
break;
double totals =convert.todouble(textbox1.text) * convert.todouble(textbox2.text);
totals =cc.getresult(totals);
設計模式《五》策略模式
設計模式概述見 它定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。意思就是演算法只是一種策略,而策略之間是可以相互替換的,替換之後也不會影響到使用這些演算法的客戶端。策略模式被運用在演算法的互換上,例如加減乘數是一系列的演算法,給定兩個數,對...
設計模式之五 策略模式
原文 設計模式之五 策略模式 前言策略模式 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式結構圖 strategy 策略類,定義所有支援的演算法的公共介面 concretestrategy1,concretestrategy2,c...
模式 策略模式
前言 所有的設計模式都是基於程式設計屆前輩們的不斷實踐得出的解決一類問題中比較有效高效的程式設計方法。策略模式 策略模式用於解決業務中不同場景下統一行為的細微差別問題。策略模式遵循 開閉原則 舉個例子來說,在購物車功能中,結算 的時候會根據使用者的不同級別去打折,那麼打折計算 的這一行為就會有不同演...