当前位置: 首页 > wzjs >正文

构建 物流网宁波seo教程行业推广

构建 物流网,宁波seo教程行业推广,石家庄造价信息网,柳城企业网站建设公司策略模式 1.1 分类 (对象)行为型 1.2 提出问题 做一款打斗游戏,英雄使用不同的武器将会产生不同的损伤效果。 1.3 解决方案 定义一系列算法,把它们一个个封装起来。并且使它们可以相互替换。本模式使得算法可独立于使用它的…

策略模式

1.1 分类

(对象)行为型

1.2 提出问题

做一款打斗游戏,英雄使用不同的武器将会产生不同的损伤效果。

1.3 解决方案

定义一系列算法,把它们一个个封装起来。并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。

1.4 实现类图

在这里插入图片描述

  1. 上下文(Context)维护指向具体策略的引用,且仅通过策略接口与该对象进行交流。
  2. 策略(Strategy)接口是所有具体策略的通用接口,它声明了一个上下文用于执行策略的方法。
  3. 具体策略(Concrete Strategies)实现了上下文所用算法的不同变体。
  4. 当上下文需要运行算法时,它会在其已连接的策略对象上调用执行方法。上下文不清楚其所涉及的策略类型与算法的执行方式。
  5. 客户端(Client)会创建一个特定策略对象并将其传递给上下文。上下文则会提供一个设置器以便客户端在运行时替换相关联的策略。

1.5 示例代码

#include <iostream>
#include <string>//Strategy
class Weapon {
public:virtual std::string fightAlgorithm() const = 0;
};class Nife : public Weapon {
public:std::string fightAlgorithm() const override {return "使用匕首计算损伤。";}
};
class Axe : public Weapon {
public:std::string fightAlgorithm() const override {return "使用斧子计算损伤。";}
};
//Context
class Hero {
private:Weapon* m_weapon;
public:Hero(Weapon* weapon = nullptr) : m_weapon(weapon) {}void setWeapon(Weapon* weapon) { m_weapon = weapon; }void fight() {std::cout << m_weapon->fightAlgorithm() << "\n";}
};
int main()
{std::cout << "客户端:英雄使用匕首攻击。\n";Nife nife;Hero hero(&nife);hero.fight();std::cout << "客户端:英雄使用斧子攻击。\n";Axe axe;hero.setWeapon(&axe);hero.fight();
}

1.6 举个栗子

在导航系统中,不同的出行方式会有不同的导航结果,使用策略模式封装不同的路径规划算法。
在这里插入图片描述

1.7 总结

1.7.1 优点

  1. 可在运行时切换对象内的算法。
  2. 可将算法的实现和使用算法的代码隔离开来。
  3. 可使用组合来代替继承。
  4. 开闭原则。无需对上下文进行修改就能够引入新的策略。

1.7.2 缺点

如果算法极少发生改变,那么没有任何理由引入新的类和接口。使用该模式只会让程序过于复杂。


文章转载自:

http://yppgCCzD.Lrjtx.cn
http://nvI8b9YC.Lrjtx.cn
http://sJaSzU5N.Lrjtx.cn
http://PQdFARey.Lrjtx.cn
http://yEsDmJyT.Lrjtx.cn
http://tDkkP60b.Lrjtx.cn
http://sGxsUDyG.Lrjtx.cn
http://YjdeXls2.Lrjtx.cn
http://PNy08fHq.Lrjtx.cn
http://tgysPLfH.Lrjtx.cn
http://IH05JCg2.Lrjtx.cn
http://8sQkxS2D.Lrjtx.cn
http://eT6j4Vgr.Lrjtx.cn
http://uCF6hYB0.Lrjtx.cn
http://vyYIplin.Lrjtx.cn
http://CqT77F2G.Lrjtx.cn
http://E1qHOgFI.Lrjtx.cn
http://pIZ3J3bp.Lrjtx.cn
http://aCwKtA0g.Lrjtx.cn
http://Sgb9oOXL.Lrjtx.cn
http://7mivYnEo.Lrjtx.cn
http://AtQt9fdM.Lrjtx.cn
http://RairVgsp.Lrjtx.cn
http://pI66QIDb.Lrjtx.cn
http://CNr9Wmrd.Lrjtx.cn
http://0QDq74yJ.Lrjtx.cn
http://7RssqvHC.Lrjtx.cn
http://Fy7lRIbH.Lrjtx.cn
http://xJOh9hlE.Lrjtx.cn
http://fG3m6Lzz.Lrjtx.cn
http://www.dtcms.com/wzjs/755435.html

相关文章:

  • wordpress 禅意主题湖南网站seo营销
  • 宜州市住房保障和城乡建设局网站y1s华硕wordpress
  • 网站要精细是什么意思免费公司网站模板
  • 南京网站建设费用东风多利卡道路清障车做网站
  • 上海市建设安全协会网站一360响应式网页设计原理
  • 网站手机pc同步企业邮箱账号是什么
  • 衡水企业网站建设费用如何创建网站站点并且避免广告
  • 网络促销分类 网站促销网站关键词优化是什么
  • 公司网站是用什么软件做建设工程许可证在那个网站办
  • 外贸网站如何优化东莞主页网站制作
  • 自助建站什么意思国外虚拟主机 两个网站
  • 网站开发项目的简介在线设计平台行业环境
  • 光明新区住房和建设局网站如何在虚拟主机一键安装wordpress
  • 我要发布文章到网站上推广 哪些网站最好公司网站建设费用怎么入账
  • 企业网站建设的一般要素品牌战略咨询
  • 网站改版声明网站开发德菁
  • 找公司做网站需要咨询什么问题做网站关键字
  • 网站首页设计代码李宁网站开发ppt模板
  • 网站开发服务费入什么科目贵阳网站制作公司
  • 企业平台网站建设方案学做实体店网站
  • 美发企业网站模板如何做个盈利的网站
  • 网站的流量是怎么算的wordpress制作表单
  • 已有域名 搭建网站河北廊坊建设局网站
  • notepad做网站广州sem代运营推广公司
  • 海南网站建设多少钱网页制作平台哪个最好
  • 泰拳图片做网站用网站建设与制作过程
  • WordPress网站主题升级网站建设系统哪个好
  • 网站建设费用:做个网站要多少钱?镇江网
  • 网站建设结课论文手机app开发工具中文版
  • 网站建设要架服务器建设网站的结束语