您的位置:首页 > 其它

设计模式:策略模式

2016-03-08 10:20 246 查看
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们这件可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。

namespace StrategyDesignPattern
{
//抽象算法类
public abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
}
//具体算法A
public class ConcreateStrategyA:Strategy
{
//算法A实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法A实现");
}
}
//具体算法B
public class ConcreateStrategyB : Strategy
{
//算法A实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法B实现");
}
}
//上下文
public class Context
{
Strategy Strategy;
public Context(Strategy strategy)
{
Strategy = strategy;
}
//上下文接口
public void ContextInterface()
{
Strategy.AlgorithmInterface();
}
}
}


View Code
测试代码:

public void StrategyTest()
{
Context context;
context = new Context(new ConcreateStrategyA());
context.ContextInterface();

context = new Context(new ConcreateStrategyB());
context.ContextInterface();
}


策略与简单工厂结合:

public Context(string type)
{
switch(type)
{
case "A":
Strategy = new ConcreateStrategyA();
break;
case "B":
Strategy = new ConcreateStrategyB();
break;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: