02.策略模式
2015-10-30 14:55:06 7 举报
设计模式-策略模式
作者其他创作
大纲/内容
class Context { Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } //上下文接口 public void ContextInterface() { strategy.AlgorithmInterface(); } }
ConcreteStrategyB
AlgorithmInterface()
打折销售计算销售金额()
满减销售计算销售金额()
结算策略基类计算销售金额()
示例:
public abstract class CashStrategy { public abstract decimal GetSaleMoney(ShoppingCart shoppingCart); }
策略模式:
Strategy
public class CashContext { private readonly CashStrategy _casher; public CashContext(CashStrategy cash) { _casher = cash; } public decimal GetResult(ShoppingCart shoppingCart) { return _casher.GetSaleMoney(shoppingCart); } }
ConcreteStrategyC
ConcreteStrategyA
它定义了算法家族,分别封装起来,让他们直接可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
策略上下文属性:_销售策略基类引用对象方法:计算销售金额(){ _销售策略基类引用对象.计算销售金额()}
Context
Strategy _strategy
ConcreteInterface()
正常销售计算销售金额()
定义所有算法的公共接口
public class CashNormal : CashStrategy { public override decimal GetSaleMoney(ShoppingCart shoppingCart) { return shoppingCart.Count * shoppingCart.Price; } }
0 条评论
下一页