当前位置: 首页 > 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://www.dtcms.com/wzjs/475502.html

相关文章:

  • 潍坊网站推广百度浏览器官网下载
  • 新疆乌鲁木齐哪家做网站好在线一键生成网页
  • 工信部网站备案查询网站改版公司哪家好
  • wordpress个人下载网站优化推广服务
  • 安全网站建设与服务的关系宝鸡seo优化
  • 网易邮箱163登录成都seo排名
  • 常熟网站建设网络促销
  • 星巴克网络营销案例分析seo是什么意思中文
  • 格泰网站建设长沙seo搜索
  • 文网站建设百度总部客服电话
  • 生活中的网页设计作品提供搜索引擎优化公司
  • 宁国网站设计公司域名注册流程
  • 做网站怎样快速收录全网营销推广平台有哪些
  • 高明网站设计制作文山seo公司
  • 新网站一般多久收录什么是sem推广
  • 微网站搭建平台网络营销概念
  • 个人电影网站备案网站查询地址
  • 秦皇岛门户网汕头seo网络推广服务
  • 怎么开发一个网站重庆seo管理平台
  • 怎么让网站排名下降bt兔子磁力搜索引擎最新版
  • 怎么通过数据库做网站的登录数字营销软件
  • 服务器做视频网站吗哈尔滨网站优化
  • 网站开发需要数据库免费注册公司
  • 怎么免费建设个人网站百度词条官网入口
  • 企业加盟网站建设茶叶网络推广方案
  • 个人网站备案 服务内容怎么写万网域名交易
  • 手机版网站模板 免费苹果看国外新闻的app
  • 贵阳网站建设咨询电脑培训机构哪个好
  • 西安教育平台网站建设制作一个小型网站
  • 专业的网页设计和网站建设公司网络营销渠道有哪些