设计模式手册-策略模式

2011-11-02

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

1.定义抽象算法

///<summary>
/// 抽象算法类
///</summary>
abstractclass Strategy
{
///<summary>
/// 算法方法 接口定义
///</summary>
publicabstractvoid AlgorithmInterface();
}

2.具体算法的实现

///<summary>
/// 具体算法A
///</summary>
class ConcreteStrategyA : Strategy
{
publicoverridevoid AlgorithmInterface()
{
Console.WriteLine(
"算法A的实现");
}
}
///<summary>
/// 具体算法B
///</summary>
class ConcreteStrategyB : Strategy
{
publicoverridevoid AlgorithmInterface()
{
Console.WriteLine(
"算法B的实现");
}
}
///<summary>
/// 具体算法C
///</summary>
class ConcreteStrategyC : Strategy
{
publicoverridevoid AlgorithmInterface()
{
Console.WriteLine(
"算法C的实现");
}
}

3.调度类

///<summary>
/// 承上启下的算法调用
///</summary>
class Context
{
Strategy strategy;
///<summary>
/// 传入具体策略对象
///</summary>
///<param name="strategy"></param>
public Context(Strategy strategy)
{
this.strategy = strategy;
}
///<summary>
/// 根据策略对象的值判断调用的算法类
///</summary>
publicvoid ContextInterface()
{
strategy.AlgorithmInterface();
}
}

  客户端调用:

///<summary>
/// 测试策略
///</summary>
staticvoid TestStrategy()
{
Context context;
//策略A
context =new Context(new ConcreteStrategyA());
context.ContextInterface();
//策略B
context =new Context(new ConcreteStrategyB());
context.ContextInterface();
//策略C
context =new Context(new ConcreteStrategyC());
context.ContextInterface();
Console.Read();
}

  策略模式比较简单但是应用非常的多


作者:robotbird, 分类:关于代码 标签: 设计模式 , 浏览(2157), 评论(0)
上一篇: 设计模式手册-单例模式
下一篇: 从今天开始坚持不刷技术类文章

相关文章

(0)条评论 订阅

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*