策略模式(Stratety)
阿新 • • 發佈:2017-07-30
over ide eat .com pat null console style col
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();
}
}
}
策略模式(Stratety)