策略模式---商场促销

商场促销的实现
这种替换实例对象的方法,使得 工厂含有所有收费方式(打折 ,满减 ,原价 ,积分 )
如果经常性的修改打折活动 就要频繁修改 工厂方法 (这一点十分糟糕)
策略模式
定义了算法家族 ,分别封装起来 ,让它们之间可以互相替换 此模式让算法的变化的变化
不会影响到使用算法的客户.
客户端代码:
static void Main (string [] args) {Context context;context = newContext(new ConcreteStrategyA());context.ContextInterface();//实例化不同的策略 ,最终调用 方法 得到的结果也不同}
新问题–客户端需要判断用哪一个算法.
简单工厂模式 我们需要让客户端认识 工厂类 和 具体那个父类 ,
而策略模式+简单工厂结合 客户端只要认识上下文类 就可以了 ,实现了算法和客户端彻底分离
总结:
【策略模式---商场促销】策略模式是一种 定义一系列算法的方法,从 概念上将 所有算法完成的工作相同 ,只是实现不同 ,他们可以用相同的方式调用所有方法 减少了 算法 和 使用算法 俩者之间的耦合策略模式的优点是简化了单元测试 ,因为每个算法都有自己的类 ,可以通过自己的接口 单独测试[DPE]