設計模式(七) 策略模式
阿新 • • 發佈:2020-12-07
策略模式是一種定義一系列演算法的方法,以相同的方式呼叫不同的演算法,減少了各種演算法類與使用演算法類之間的耦合。
它的重心不是如何實現演算法,而是如何組織,呼叫這些演算法。從而讓程式結構更靈活,具有更好的維護性和擴充套件性。
程式碼實現:
//演算法策略介面 public interface IStrategy { int GetPayment(int charge); } //策略A public class CashNormarl : IStrategy { public int GetPayment(int charge) { return charge; } } //策略B public class CashReturn : IStrategy { public int GetPayment(int charge) { if(charge >= 300View Code) { return charge-100; } } } //組織策略上下文 public class CashContext { IStrategy _strategy ; public CashContext(IStrategy strategy) { _strategy = strategy; } public int GetPayment(int charge) { return _strategy.GetPayment(); } }//客戶端呼叫 int charge = 1000; var cash = CashContext(new CashReturn()); var payment = cash.GetPayment(charge );
還可以通過簡單工廠模式來優化 組織策略上下文類 ,讓客戶端與演算法實現類完全解耦