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

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

    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();
            }
        }
    }

用最简单的例子理解策略模式(Strategy Pattern)的更多相关文章

  1. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了“工厂模式”.“策略模式”.“状态模式”等.当然在重构时,有的地 ...

  2. 8.6 GOF设计模式四: 策略模式… Strategy Pattern

    策略模式… Strategy Pattern  在POS系统中,有时需要实行价格优惠, 该如何处理?  对普通客户或新客户报全价  对老客户统一折扣5%  对大客户统一折扣10%  注:课件 ...

  3. 设计模式 - 策略模式(Strategy Pattern) 具体解释

    策略模式(Strategy Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26577879 本文版权全 ...

  4. HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern)

    策略模式(Strategy Pattern): 定义了了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户端. 第一个设计原则:找出应用中可能需要变化之处,把他们独立 ...

  5. 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)

    原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...

  6. 反馈法学习设计模式(一)——策略模式Strategy Pattern

    简介(Introduction) 之前学习Java8实战时,遇到一个很好的策略模式示例.便想着借着这个示例结合反馈式的方法来,学习策略设计模式,也以便后面反复琢磨学习. 首先我们通过练习,逐步写出符合 ...

  7. 二十四种设计模式:策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 介绍定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例有一个Message实体类,对它的操作有 ...

  8. 设计模式——策略模式(Strategy Pattern)

    写在前面: 直接将书中的例子用来作为记录自己学习的成果,不知道这样好不好,如果给原作者带来什么不利的影响不妨告知一声,我及时删掉. UML图: 抽象策略:Strategy package com.cn ...

  9. php策略模式(strategy pattern)

    ... <?php /* The strategy pattern defines a family of algorithms, each of which is encapsulated a ...

随机推荐

  1. Celery 框架学习笔记(生产者消费者模式)

    生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产 ...

  2. 微信小程序实现左滑删除源码

    左滑删除效果在app的交互方式中十分流行,比如全民应用微信 微信左滑删除 再比如曾引起很大反响的效率app Clear Clear左滑删除 从技术上来说,实现这个效果并不困难,响应一下滑动操作,移动一 ...

  3. svn错误 svnserve.conf:12: Option expected解决办法

    经常有新手配置基于svnserve的subversion服务器后,在客户端访问subversion版本库时出现这个错误:svnserve.conf:12: Option expected为什么会出现这 ...

  4. TypeScript学习笔记(一) - 环境搭建

    本篇将简单介绍一下TypeScript,并记录开发环境的搭建.使用Visual Studio Code进行一个简单的Demo开发过程. 第一部分.简介 TypeScript是一种由微软开发的自由和开源 ...

  5. pomelo 安装

    1. 安装nodejs ,python ,C++运行环境(VS2012以上版本) 2.npm install -g node-gyp --registry=https://registry.npm.t ...

  6. 8-1 binpacking uva1149(贪心)

    题意:给定N个物品的重量Li  背包的容量M 同时要求每个背包最多装两个物品 求至少要多少个背包才能装下所有物品 简单贪心  注意输出: #include<bits/stdc++.h> u ...

  7. linux下解除端口占用

    1.找出占用端口进程的pid sudo lsof -i:port 2.终止进程 pid

  8. Ionic入门四:卡片

    近年来卡片(card)的应用越来越流行,卡片提供了一个更好组织信息展示的工具. 针对移动端的应用,卡片会根据屏幕大小自适应大小. 我们可以很灵活的控制卡片的显示效果,甚至实现动画效果. 卡片一般放在页 ...

  9. centos6 yum 安装nginx 不成功解决办法

    转自  http://wlheihei.com/view/64 [root@51ou.com yum.repos.d]# yum install nginxLoaded plugins: fastes ...

  10. Windows 中打开 shell

    按住 Shift,单机鼠标右键"在当前目录打开命令窗口"