策略模式:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换。

策略模式让算法独立于使用它的客户而独立变化。

代码如下:

#include <iostream>
using namespace std;class WeaponStrategy
{public:virtual void useWeapon() = 0;
};class Knife :public WeaponStrategy
{public:virtual void useWeapon(){cout << "使用匕首" << endl;}
};class AK47 :public WeaponStrategy
{public:virtual void useWeapon(){cout << "使用AK47" << endl;}
};class Character
{public:void setWeapon(WeaponStrategy *weapon){this->pWeapon = weapon;}void ThrowWeapon(){this->pWeapon->useWeapon();}WeaponStrategy *pWeapon;
};void test01()
{Character *character = new Character;WeaponStrategy *knife = new Knife;WeaponStrategy *ak47 = new AK47;character->setWeapon(knife);character->ThrowWeapon();character->setWeapon(ak47);character->ThrowWeapon();delete ak47;delete knife;delete character;
}int main()
{test01();return 0;
}

测试结果:

[设计模式]策略模式相关推荐

  1. Python设计模式-策略模式

    Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...

  2. 关于设计模式——策略模式-Strategy Pattern

    文章目录 1 策略模式 1.1 模拟鸭子 1.2 设计原则 1.3 整合行为 1.4 模拟鸭子代码的代码 1.5 动态设定行为 1.6 重新查看整体 1.7 继承和组合 1.8 总结 1.9 优劣期间 ...

  3. [设计模式] ------ 策略模式

    策略模式 它定义了算法家族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 其实很简单,可能很多人都用到了,只不过还不知道这就是策略模式而已. 比如定义一个接口A, ...

  4. java 策略模式 促销_java设计模式——策略模式

    一. 定义与类型 定义:针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换.策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能.当代码中 ...

  5. Springboot 使用设计模式- 策略模式

    前言 直白点,什么场景我们需要使用到设计模式- 策略模式. 在平常的springboot项目里面做CRUD,我们的习惯性基本是 一个mapper,一个service,一个serviceImpl. 但是 ...

  6. 李建忠设计模式——策略模式Strategy

    目录 1.策略模式定义 1.动机 2.模式定义 3.结构 2.实现例子 1.问题描述 2.代码实现 3.要点总结 4.参考 1.策略模式定义 1.动机 软件构建过程中,某些对象使用的算法可能多种多样, ...

  7. 15. 星际争霸之php设计模式--策略模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  8. Java设计模式-策略模式作业

    Java设计模式-策略模式作业,所有类和接口均在一个package内 文章目录 前言 一.作业内容 二.具体实现 1.类图 2.Strategy接口 3.PreCopyStrategy类 4.Post ...

  9. 设计模式-策略模式2.0

    设计模式-策略模式2.0 前面文章我们说过了传统的策略模式的实现,本文我们简单说下设计模式中的升级版的策略模式,策略模式2.0. 代码实现 talk is cheap show me the code ...

  10. 设计模式-策略模式(Strategy)-Java

    设计模式-策略模式(Strategy)-Java 目录 文章目录 1.前言 2.示例案例-电影票打折方案 3.策略模式概述 3.1.策略模式定义 3.2.策略模式结构 3.3.策略模式结构图中角色 3 ...

最新文章

  1. Ubuntu 12.04 下安装 VirtualBox 及虚拟机winxp的安装
  2. Tomcat和Resin有什么区别,工作中你怎么选择?
  3. Singleton 和 Monostate 模式
  4. “黑科技”监控图像技术你知道吗?
  5. vue设置isactive_vue 绑定样式的几种方式
  6. 在职研究生和全日制研究生的区别_在职研究生和全日制研究生的区别?
  7. 推特称攻击者利用其 API 匹配用户名和电话号码
  8. python Pandas文件读写
  9. LL(1)文法与其对应的FOLLOW,SELECT和FIRST集
  10. python扫雷代码_没有Python不能做的游戏,这些都可以做(附赠大型游戏开发源码)...
  11. Hyperledger Fabric 或 Composer 查看区块详情
  12. mysql实战27 | 主库出问题了,从库怎么办?
  13. STC89C52RC的AD7705读写实验(软件SPI)
  14. vue-cli脚手架build目录中的webpack.base.conf.js配置文件
  15. Es的mapping映射
  16. python中compile函数
  17. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  18. H3C BGP与IGP交互配置
  19. python程序设计题库-python编程题库
  20. 今天才发现!通过微信左下角,还可以快速找到未读消息

热门文章

  1. Python3.6学习笔记(二)
  2. VS2019社区版(Community)试用30天过期的有效解决办法
  3. 【经典回放】多种语言系列数据结构算法:基数排序
  4. Android之解决ScrollView嵌套RecycleView导致滑动冲突或者显示不全的问题
  5. Android之解决布局文件图片太大同步放缩后挤掉其它布局的问题
  6. 深入 char * ,char ** ,char a[ ] ,char *a[]
  7. Struts2的ResultType和Action处理链
  8. python thinker canvas create_arc 使用详解
  9. 两对光纤收发器用网线连接_为什么现在的人不喜欢用网线,反而更爱用光纤来传输呢?涨知识了...
  10. 绝不翻车珍珠奶茶做法