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

网站源码下载外链 网站权重

网站源码下载,外链 网站权重,南昌网站开发技术,自适应wordpress模板作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、策略模式是什么? 策略模式是一种行为型的软件设计模式,针对某个行为,在不同的应用场景下&…

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

一、策略模式是什么?

       策略模式是一种行为型的软件设计模式,针对某个行为,在不同的应用场景下,有不同的实现算法,并且可以互相替换。比如两军交战,军队会采用不同的阵法、策略、兵法应对不同的战况。

       策略模式的优点:

  1. 便于管理算法族。一套策略对应一套算法,该模式可以很好地进行维护和管理。
  2. 避免使用多重条件语句,如if else和switch。庞大的系统中,过多的多重条件语句会让代码显得臃肿和不易维护,提高出错概率。
  3. 封装算法。提高了算法的保密性和安全性。
  4. 符合开闭原则。

      策略模式的缺点:

  1. 客户端需要了解每种策略,并自行决定何时何地使用何种策略。
  2. 随着策略增多,策略类数量增加,要注意对类的维护。

二、策略模式

2.1 结构图

       客户端即Main主函数,根据不同场景选用不同策略。

2.2 代码示例

       场景描述:我有一支军队,先让其使用火攻震慑对方,再用离间策反敌人。

//Strategy.h
/****************************************************/
#pragma once
#include <iostream>
#include <unordered_map>
#include <vector>
#include <list>using namespace std;// 策略类型
enum WARCRAFT_TYPE
{FIREATTACK,                    // 火攻SOWDISCORD,					   // 离间
};// 定义策略接口-兵法
class Warcraft 
{
public:// 执行virtual void execute() = 0;
};// 实现具体策略类-火攻
class FireAttack : public Warcraft 
{
public:// 执行virtual void execute() {cout << "执行'火攻'!" << endl;}
};// 实现具体策略类-离间
class SowDiscord : public Warcraft 
{
public:// 执行virtual void execute() {cout << "执行'离间'!" << endl;}
};// 背景类-军队
class Army 
{
public:// 构造函数Army(WARCRAFT_TYPE type){setWarcraft(type);}// 析构函数~Army() {if(m_warcraft) {delete m_warcraft;m_warcraft = nullptr;}}// 设置策略void setWarcraft(WARCRAFT_TYPE type) {// 清空旧策略if (m_warcraft) {delete m_warcraft;m_warcraft = nullptr;}// 使用新策略switch (type){case FIREATTACK:m_warcraft = new FireAttack();break;case SOWDISCORD:m_warcraft = new SowDiscord();break;default:cout << "没有该策略。" << endl;break;}}// 执行兵法void executeWarcraft() {cout << "准备!" << endl;m_warcraft->execute();cout << "结束!" << endl;}private:Warcraft* m_warcraft;
};
//main.cpp
/****************************************************/
#include <iostream>
#include <string>
#include "Strategy.h"using namespace std;int main()
{Army *army = new Army(FIREATTACK);army->executeWarcraft();army->setWarcraft(SOWDISCORD);army->executeWarcraft();delete army;army = nullptr;return 0;
}

       程序结果如下。

       策略模式的实现有很多种,我是采用了枚举的形式,将具体策略的创建放在了环境类中,类中new别忘了delete;也可以在客户端创建策略,再将策略指针传入环境类。

三、总结

       我尽可能用较通俗的话语和直观的代码例程,来表述我对策略模式的理解,或许有考虑不周到的地方,如果你有不同看法欢迎评论区交流!希望我举的例子能帮助你更好地理解策略模式。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

http://www.yayakq.cn/news/969890/

相关文章:

  • 网站带后台免费下载网站怎么做才 吸引人
  • 相亲网站男人拉我做外汇江阴网站制作
  • 免费网站建设代理网站开发的关键技术有哪些
  • 中国免费网站建设建筑工程找活网站
  • 宽屏绿色新闻资讯网站织梦模板网站域名价格 优帮云
  • 如何做自己的论坛网站电子商务网站建设与维护 试卷
  • 家具网站开发项目计划书微网站第三方平台
  • 网站如何引导页wordpress 如何备份数据库结构
  • 龙岗网站建设深圳信科直播网站建设重庆
  • 网站建设有限公司江门网站设计素材
  • 哪个网站做译员好河北省住房城乡建设厅网站
  • 做一个网站指定页面的推广网站建设官网
  • 能做外链的产品网站网页无法访问如何解决h5
  • seo网站代码优化易语言做网站登陆
  • 网站开发引用思源黑体目前做网站流行的语言
  • 网站空间备案 昆明百度数据开放平台
  • 广西南宁网站建设哪家好邢台网站建设免费做网站排名
  • 长沙旅游网站制作携程网站建设目的
  • 网站备案要网站做才可以使用吗重庆网站制作公司多少钱
  • 有没有专门找装修公司的网站网站备案证明
  • 可以直接进入的网站正能量大豆网莫奈设计公司官网
  • 网站制作自学百度云原画外包网
  • cms建站系统网站开发实用技术2.8.5
  • 博文阅读网站建设wordpress 空格
  • 沈阳网站制作系统域名查询 ip
  • 中国建设银行官方网站k宝驱动现在还有人做网站吗
  • 网站seo问题诊断工具一个完整网页的制作
  • 水果网站策划书永久网站建设教程
  • 芜湖有哪些招聘网站丝瓜app官网下载安装io
  • 长春建站方案化妆品商城网站建设