策略模式
策略模式
特点:准备一组算法,分别封装到各自的类中,使他们可以互换
构成:
策略上下文(Context),持有一个策略类的对象,提供动态设置策略方法
抽象策略:通常是一个接口或者一个抽象类
具体策略:包装了具体的算法和行为
示例代码:
namespace Strategy
{
public abstract class Strategy
{
public abstract void WriteLog();
}
}
namespace Strategy
{
public class TxtLog : Strategy
{
public override void WriteLog()
{
Console.WriteLine("Txt");
Console.Read();
}
}
public class DbLog : Strategy
{
public override void WriteLog()
{
Console.WriteLine("DB");
Console.Read();
}
}
public class XmlLog : Strategy
{
public override void WriteLog()
{
Console.WriteLine("XML");
Console.Read();
}
}
}
namespace Strategy
{
public class Context
{
Strategy strategy;
public Context(Strategy st)
{
this.strategy = st;
}
public void ContextStrategy()
{
strategy.WriteLog();
}
public void SetStrategy(Strategy st)
{
this.strategy = st;
}
}
}
static void Main(string[] args)
{
Context c = new Context(new TxtLog());
c.ContextStrategy();
c.SetStrategy(new DbLog());
c.ContextStrategy();
c.SetStrategy(new XmlLog());
c.ContextStrategy();
}