您的位置:首页 > 其它

设计模式之策略模式

2015-08-24 15:50 246 查看
策略模式(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();
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: