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

做网站运营用什么配置电脑做陌陌网站什么做

做网站运营用什么配置电脑,做陌陌网站什么做,全国企业信用信息查询官网,免费网站现在是怎么了说起来,我们在玩《黑神话:悟空》的时候一共有三种棍法可以选择:劈棍、立棍和戳棍。当我带着劈棍法赶路时,突然四面八方来了一群小怪,这时我急中生智切换到了立棍法,一个风云转再接江海翻,对手被…

说起来,我们在玩《黑神话:悟空》的时候一共有三种棍法可以选择:劈棍、立棍和戳棍。当我带着劈棍法赶路时,突然四面八方来了一群小怪,这时我急中生智切换到了立棍法,一个风云转再接江海翻,对手被尽数消灭。当我准备拍拍屁股走人,突然发现有个小妖在逃跑!我直接掏出戳棍法,千里之外取其性命……

没错,不同的棍法就相当于我们不同的对敌策略,我们能够灵活地在不同场合下切换策略。蕴含这种思想的设计模式叫做策略模式(Strategy)。


介绍

策略模式是一种行为型设计模式,其定义是:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。

这样一来,当一组类中互相的区别只有行为差异的时候,策略模式的作用就变得十分强大了。例如黑神话中不同的棍法切换后,武器没变、攻击目标没变等等都没有变,只有攻击方式等少数行为发生了改变,那么就把不同的攻击方式都拿出来封装在一个接口下,实现不同的具体类,这样就可以通过策略模式灵活切换攻击方式的算法了。

总的来说,实现策略模式一共有三个角色:

1、抽象策略类:统一具体测量的接口,规范标准。

2、具体策略类:封装具体的策略行为。

3、上下文类:“上下文”指的就是策略执行的场景,负责集中管理策略的行为。这样一来,客户端只需要与上下文类进行交互,解耦了客户端与具体策略。

实现

光说不练假把式,接下来我就用C++简单模拟一下棍式切换该如何用策略模式实现。

在这个场景中,抽象策略类是“攻击方式”,具体策略类有“劈棍”、“立棍”和“戳棍”,分别封装各自的独特重击和技能。

#include <iostream>
using namespace std;/*抽象策略类*/
class AttackStrategy {
public:virtual ~AttackStrategy(){}//重击接口virtual void thump() = 0;//技能接口virtual void skill() = 0;
};
/*具体策略类*/
//劈棍
class PiGun : public AttackStrategy {
public:void thump() {cout << "腾空而起,高举棍子,向你劈去。" << endl;}void skill() {cout << "破棍式!斩棍式!" << endl;}~PiGun() {};
};
//立棍
class LiGun : public AttackStrategy {
public:void thump() {cout << "立起棍子,爬到顶端,向你砸去。" << endl;}void skill() {cout << "风云转!江海翻!" << endl;}~LiGun() {};
};
//戳棍
class ChuoGun : public AttackStrategy {
public:void thump() {cout << "后撤一步,蓄势待发,向你捅去。" << endl;}void skill() {cout << "退寸!进尺!" << endl;}~ChuoGun() {};
};
/*上下文类*/
class Battle {
private://指针指向策略,名为“棍式”AttackStrategy* gunShi;
public://初始化为空指针Battle() : gunShi(nullptr){}//设置棍式策略void setGunShi(AttackStrategy* way) {//先处理旧的if (gunShi != nullptr) {delete gunShi;}gunShi = way;}//执行棍式策略void exeThump() {if (gunShi != nullptr) {gunShi->thump();}}void exeSkill() {if (gunShi != nullptr) {gunShi->skill();}}
};
int main() {//创建上下文类实例Battle battle;//使用劈棍battle.setGunShi(new PiGun);battle.exeThump();battle.exeSkill();//使用立辊battle.setGunShi(new LiGun);battle.exeThump();battle.exeSkill();//使用戳棍battle.setGunShi(new ChuoGun);battle.exeThump();battle.exeSkill();return 0;
}

总的来说,策略模式拥有算法切换自由的优势,新增算法只需要新建策略类即可,扩展性良好,符合开闭原则。但是用户在使用时需要知道策略类的名字,同时每增加一个策略,需要重新写一个类,算是个小缺点。


小结

策略模式看起来结构很简单,但其对于游戏开发是有重要意义的。这种设计模式极大地提高了游戏中各个系统的可扩展性和多样性。同时简化了复杂的逻辑,让代码清晰,也可以提高团队开发的效率。而且其作为行为型设计模式,还可以结合工厂模式使用,让代码更灵活!

如有补充纠正欢迎留言。


文章转载自:

http://0Rk9dzml.gjssk.cn
http://qBZQ9UYq.gjssk.cn
http://EXAtP2MJ.gjssk.cn
http://L8XG2dwf.gjssk.cn
http://Bh8E65yy.gjssk.cn
http://gY40mfil.gjssk.cn
http://vn3frO2P.gjssk.cn
http://QKHNm5Cf.gjssk.cn
http://smqXjIXS.gjssk.cn
http://9cFdaT6z.gjssk.cn
http://Y94qoHzI.gjssk.cn
http://ENcmXr1Y.gjssk.cn
http://e9oPAnl2.gjssk.cn
http://IdQg8iTr.gjssk.cn
http://RmdQUADa.gjssk.cn
http://QJBHwBG5.gjssk.cn
http://a6U8fTSH.gjssk.cn
http://uThLmZ7P.gjssk.cn
http://CB9F5xL7.gjssk.cn
http://ROtTQWUB.gjssk.cn
http://AGWh3l76.gjssk.cn
http://KzFp0ehq.gjssk.cn
http://q279Wz2q.gjssk.cn
http://5px2zi9f.gjssk.cn
http://UXCyCKbU.gjssk.cn
http://oH4pZWGH.gjssk.cn
http://LPVojf6v.gjssk.cn
http://CwQXM5g8.gjssk.cn
http://OP1Ef9eJ.gjssk.cn
http://PqnMqy6P.gjssk.cn
http://www.dtcms.com/wzjs/654585.html

相关文章:

  • 泰州网站优化公司wordpress ask me
  • 网站cms系统下载企业网站建设记什么会计科目
  • 烟台网站推广网站开发流程说明
  • 自助发外链网站建造师报名时间2023年官网
  • 做资讯网站盈利wordpress设置邮箱
  • 邮箱官方网站注册视频社区app源码
  • 网络营销教学网站网站建设方案书模板 备案
  • 建立网站站点方法什么是响应式的网站
  • 广州网站建设报价表淘宝无货源一键铺货软件
  • 昆山花桥做网站网站解析打不开
  • 网站 运营工作如何做wordpress主题上传图片教程
  • 上海营销型网站seo网站的设计流程
  • 用墨刀做视频网站电商企业有哪些
  • 平潭县机场建设网站做网站难吗?
  • wordpress 登陆界面襄阳抖音seo找哪家
  • 网站改版301怎么做如何做简单视频网站
  • 企业网站结构asp.net mvc做网站难吗
  • 自己弄个网站昌吉建设网站
  • 企业商城网站建设方案顺德网站建设基本流程
  • 网站模块制作知名企业门户网站建设联系电话
  • 网站不被收录了远大科技 网站建设
  • 公司建站电脑QQ浮动窗口怎做电脑网站
  • 深圳设计网页制作公司seo是什么职业做什么的
  • 响应式网站推广长春网络建站
  • 镇江网站网站建设少儿编程加盟哪个品牌好
  • 用了wordpress的网站aaa免费服务器
  • 青海建设厅网站黑名单班级网站建设思路
  • 背景色搭配网站北京大学网络服务
  • 郑州市 网站建设wordpress采集微信公众文章内容
  • wordpress文章批量编辑器汕头seo网站排名