1. 程式人生 > >策略模式(Stratety)

策略模式(Stratety)

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)