码迷,mamicode.com
首页 > 其他好文 > 详细

用最简单的例子理解策略模式(Strategy Pattern)

时间:2014-09-06 23:44:34      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   ar   2014   art   

当一个动作有多种实现方法,在实际使用时,需要根据不同情况选择某个方法执行动作,就可以考虑使用策略模式。

 

把动作抽象成接口,比如把玩球抽象成接口。

    public interface IBall
    {
        void Play();
    }

 

有可能是玩足球、篮球、排球等,把这些球类抽象成实现接口的类。

    public class Football : IBall
    {
        public void Play()
        {
            Console.WriteLine("我喜欢足球");
        }
    }
    public class Basketball : IBall
    {
        public void Play()
        {
            Console.WriteLine("我喜欢篮球");
        }
    }
    public class Volleyball : IBall
    {
        public void Play()
        {
            Console.WriteLine("我喜欢排球");
        }
    }   

 

还有一个类专门用来选择哪种球类,并执行接口方法。

    public class SportsMan
    {
        private IBall ball;
        public void SetHobby(IBall myBall)
        {
            ball = myBall;
        }
        public void StartPlay()
        {
            ball.Play();
        }
    }

 

客户端需要让用户作出选择,根据不同的选择实例化具体类。

    class Program
    {
        static void Main(string[] args)
        {
            IBall ball = null;
            SportsMan man = new SportsMan();
            while (true)
            {
                Console.WriteLine("选择你喜欢的球类项目(1=足球, 2=篮球,3=排球)");
                string input = Console.ReadLine();
                switch (input)
                {
                    case "1":
                        ball = new Football();
                        break;
                    case "2":
                        ball = new Basketball();
                        break;
                    case "3":
                        ball = new Volleyball();
                        break;
                }
                man.SetHobby(ball);
                man.StartPlay();
            }
        }
    }

bubuko.com,布布扣

用最简单的例子理解策略模式(Strategy Pattern)

标签:style   blog   http   color   os   使用   ar   2014   art   

原文地址:http://www.cnblogs.com/darrenji/p/3959904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!