public static void Main()
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
public abstract void AlgorithmInterface();
class ConcreteStrategyA : Strategy
public override void AlgorithmInterface()
Console.WriteLine("Called ConcreteStrategyA.AlgorithmInterface()");
class ConcreteStrategyB : Strategy
public override void AlgorithmInterface()
Console.WriteLine("Called ConcreteStrategyB.AlgorithmInterface()");
class ConcreteStrategyC : Strategy
public override void AlgorithmInterface()
Console.WriteLine("Called ConcreteStrategyC.AlgorithmInterface()");
private Strategy _strategy;
public Context(Strategy strategy)
this._strategy = strategy;
public void ContextInterface()
_strategy.AlgorithmInterface();