设计模式之策略模式

来源:互联网 发布:linux运维工资高吗 编辑:程序博客网 时间:2024/06/05 18:13

策略模式(strategy):定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。

通俗的说,就是一个客户可能需要多种不同的算法(方法,要求等),但是是为了实现一个功能,比如都是为了商场促销,为了让这些算法类与使用算法类之间减少耦合,抽象出它们之间共有的功能,抽象为一个父类,然后使用一个类似工厂的类来管理这些类,也就是根据客户端的要求来实例化不同的类。


using System;namespace Strategy{class Program{static void Main(string[] args){Context context;context = new Context(new ConcreteStrategyA());context.ContextInterface();context = new Context(new ConcreteStrategyB());context.ContextInterface();Console.ReadKey();}}//定义所有支持的算法的公共接口(共同方法,以便统一调用)abstract class Strategy{public abstract void AlgorithmInterface();}class ConcreteStrategyA : Strategy{public override void AlgorithmInterface(){Console.WriteLine("具体算法A实现");}}class ConcreteStrategyB : Strategy{public override void AlgorithmInterface(){Console.WriteLine("具体算法B实现");}}class Context{Strategy strategy;//初始化时传入具体的策略对象public Context(Strategy strategy){this.strategy = strategy;}//调用具体的方法public void ContextInterface(){strategy.AlgorithmInterface();}}}


0 0