设计模式之策略模式

策略模式:策略模式主要用于算法多且容易改变的场景,例如商场打折促销,由于它的业务规则没有定性,需要经常的改变,假如我们根据某一个规则进行业务的开展,势必会依赖于具体的实例,就违背了依赖倒转原则,也就是说我们不能面向实例编程,应当面向接口编程!策略也是设计模式中开放封闭原则的有效地体现!!
Strategy.CS代码:
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 ConcreteStrategyC: Strategy
{
public override void AlgorithmInterface()
{
Console.WriteLine("算法C的实现");
}
}
Contex.CS代码:
class Context
{
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}
主程序:
static void Main(string[] args)
{
Context context;
context=new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
}
浙公网安备 33010602011771号