现在的位置: 首页 > 综合 > 正文

行为型模式-策略模式

2013年06月15日 ⁄ 综合 ⁄ 共 1043字 ⁄ 字号 评论关闭
using System;
using System.Text;
using System.Collections.Generic;

namespace 策略模式
{

/*
* 策略模式意图:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。
*
* 策略模式实现要点:1、策略调用类中一般会包含一条或几条if或switch 语句,在这些语句中实现具体策略的调用
* 2、使用扩展方法,可以直接定义新的策略,而不依赖原来所支持的类
* 3、也可以使用委托的方式实现策略模式
*
* 策略模式优点:1、策略模式使得具体算法的调用独立于客户端变化
*
*/

///<summary>
/// 策略的公共方法
///</summary>
publicinterface IStrategy
{
publicvoid MustDo();
}

publicclass Context
{
IStrategy strategy
=new ConcreteStrategy1();
///<summary>
/// 调用具体策略方法
///</summary>
publicvoid DoSomething()
{
this.strategy.MustDo();
}
///<summary>
/// 转换策略
///</summary>
publicvoid SwitchStrategy()
{
if (strategy is ConcreteStrategy1)
{
strategy
=new ConcreteStrategy2();
}
else
{
strategy
=new ConcreteStrategy1();
}
}
}
///<summary>
/// 具体策略实现类
///</summary>
publicclass ConcreteStrategy1 : IStrategy
{
publicvoid MustDo()
{
//具体策略实现方法
}
}

///<summary>
/// 具体策略实现类
///</summary>
publicclass ConcreteStrategy2 : IStrategy
{
publicvoid MustDo()
{
//具体策略的实现
}
}

publicclass AppClient
{
publicstaticvoid Main(string[] args)
{
Context context
=new Context();
context.DoSomething();
//当需要转换策略的时候
context.SwitchStrategy();
context.DoSomething();
}

}
}

抱歉!评论已关闭.