C#
interface IStrategyDistance
{
void Calculate(int a, int b)
}
class StrategyDistanceByCar : IStrategyDistance
{
public virtual double Calculate(a, b) { ... }
}
class StrategyDistanceByTrain : IStrategyDistance
{
public virtual double Calculate(a, b) { ... }
}
class Navigator
{
private IStrategyDistance _strategy;
void SetStrategyDistance(IStrategyDistance strategy)
{
this._strategy = strategy
}
void ExecuteStrategyDistance(int a, int b)
{
return _strategy.Calculate(a, b)
}
}
class Application
{
void Main()
{
Navigator navigator = new Navigator();
context.setStrategyDistance(new StrategyDistanceByCar());
result = navigator.ExecuteStrategyDistance(5, 9);
context.setStrategyDistance(new StrategyDistanceByPlain());
result = context.ExecuteStrategyDistance(6, 4);
}
}