关于C# 设计模式 Strategy 策略模式

关于C# 设计模式 Strategy 策略模式

using System;
using System.Collections.Generic;
using System.Text;

///Strategy(策略)模式又称Policy模式,用于定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
///add by jzh 2007-04-29
namespace DesignPattern
{
    /// <summary>
    /// strategy  定义所有支持的算法的公共接口.
    /// context使用这个接口来调用某concreteStrategy定义的算法
    /// </summary>
    abstract class Strategy
    {
        abstract public void DoAlgorithm();
    }

    /// <summary>
    /// 具体策略,以strategy接口实现某具体算法
    /// </summary>
    class FirstStrategy : Strategy
    {
        override public void DoAlgorithm()
        {
            Console.WriteLine("第一个策略");
        }
    }

    class SecondStrategy : Strategy
    {
        override public void DoAlgorithm()
        {
            Console.WriteLine("第二个策略");
        }
    }

    /// <summary>
    /// 上下文,用一个ConcreteStrategy对象来配置,
    /// 维护一个对strategy对象的引用,
    /// 可定义一个接口来让strategy访问它的数据
    /// </summary>
    class Context
    {
        Strategy s;
        public Context(Strategy strat)
        {
            s = strat;
        }

        public void DoWork()
        {
            Console.WriteLine("执行动作");
        }

        public void DoStrategyWork()
        {
            s.DoAlgorithm();
        }
    }

    public class Client
    {
        public static void Main(string[] args)
        {
            FirstStrategy firstStrategy = new FirstStrategy();
            Context c = new Context(firstStrategy);
            c.DoWork();
            c.DoStrategyWork();

            Console.ReadLine();
        }
    }
}

 

发表回复

您的电子邮箱地址不会被公开。