在今天,讀書有時是件「麻煩」事。它需要你付出時間,付出精力,還要付出乙份心境。--僅以《大話設計模式》來祭奠那逝去的……
策略模式就是用來封裝演算法的。實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。
1.商場**活動
實現商場**活動,正常收費、滿300返100和打8折活動
首先我們定義乙個收費抽象類,包含乙個收取現金抽象方法
/// /// 收費抽象類///
public abstract class fee
然後實現我們需要的演算法:正常收費和打折收費,讓其繼承收費抽象類,重寫acceptcash方法實現不同的收費演算法(如果我們以後要增加其他收費方法,只需要新增乙個繼承fee收費抽象類的子類,實現其收費演算法,而無需變動已經寫好的演算法)
/// /// 正常收費///
public class feenormal : fee
}/// /// 打折收費
///
public class feerebate : fee
public override double acceptcash(double money)
}
下面定義兩個收費策略上下文類。第乙個是結合簡單工廠模式後,將判斷使用那種演算法轉移到了策略上下文中,同時客戶端呼叫的時候同比簡單工廠模式暴漏的類更少,客戶端只需要認識feecontext就好了,耦合度更低;第二個是未結合簡單工廠模式的策略上下文,客戶端使用它需要自己判斷到底使用哪種演算法,不夠靈活,擴充套件性不強
/// /// 收費策略上下文(結合簡單工廠)///
public class feecontext
}public double acceptcash(double money)
}/// /// 收費策略上下文
///
public class feecontext2
public double acceptcash(double money)
}
最後是客戶端呼叫,這裡只展示了結合簡單工廠模式後的調取方式
class program}
大話設計模式 策略模式
前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...
大話設計模式 策略模式
前言 做事情的時候我們需要動動腦來簡化自己完成任務的負擔,這就需要講究策略了,我們會根據自己所處的環境列出所有的可能條件,再從中挑選合適的方法來完成這件事。就像我們過年回家,我們可以選擇高鐵 普通火車 還可以選擇硬座 軟座 臥鋪,這都是我們回家的策略 買不到直達的還得轉戰好幾個火車站,策略的最終到達...
大話設計模式 策略模式
上篇文章 大話設計模式 簡單工廠模式告訴了我們乙個網咖收費工廠物件怎樣建立收費形式 白天收費 夜間收費 的例項。簡單工廠 中有非常多 case分支語句 假設我們還想填加收費的形式 比方會員收費啊,通宵收費啊 就須要修改工廠 每次維護和擴充套件都要花費非常多時間,另外修改非常easy造成紕漏 比方之前...