namespace StrategyPattern //策略模式 { /// /// 定義所以支持的演算法的公共介面 /// abstract class Strategy { /// /// 演算法方法。 /// public abstract void Algorithm... ...
namespace StrategyPattern //策略模式
{
/// <summary>
/// 定義所以支持的演算法的公共介面
/// </summary>
abstract class Strategy
{
/// <summary>
/// 演算法方法。
/// </summary>
public abstract void AlgorithmInrerface();
}
class ConcreateStratetyA : Strategy
{
public override void AlgorithmInrerface()
{
Console.WriteLine("實現演算法A");
}
}
class ConcreateStratetyB : Strategy
{
public override void AlgorithmInrerface()
{
Console.WriteLine("實現演算法B");
}
}
class ConcreateStratetyC : Strategy
{
public override void AlgorithmInrerface()
{
Console.WriteLine("實現演算法C");
}
}
/// <summary>
/// 用一個ConcreateStratety來配置,來維護一個對Stratety對象的引用。
/// </summary>
class Context
{
Strategy stratety;
public Context(Strategy stratety)//構造器註入具體的策略對象。
{
this.stratety = stratety;
}
/// <summary>
/// 根據具體策略的對象,調用其演算法的方法。
/// </summary>
public void ContextInterface()
{
stratety.AlgorithmInrerface();
}
}
class Program
{
static void Main(string[] args)
{
Context context = null;
context = new Context(new ConcreateStratetyA());
context.ContextInterface();
context = new Context(new ConcreateStratetyB());
context.ContextInterface();
context = new Context(new ConcreateStratetyC());
context.ContextInterface();
Console.Read();
}
}
}