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

皮革材料做网站百度网盘app怎么打开链接

皮革材料做网站,百度网盘app怎么打开链接,特种作业人员操作证,英文网站 建站一 什么是 "模板方法(Template Method)模式" 在固定步骤确定的情况下,通过多态机制在多个子类中对每个步骤的细节进行差异化实现,这就是模板方法模式能够达到的效果。 模板方法模式属于:行为型模式。 二 &…

一 什么是 "模板方法(Template Method)模式"

在固定步骤确定的情况下,通过多态机制在多个子类中对每个步骤的细节进行差异化实现,这就是模板方法模式能够达到的效果。

模板方法模式属于:行为型模式。

二 "模板方法(Template Method)模式"能解决什么样子的问题

在固定步骤确定的情况下。

通过多态机制在各个子类中实现每个步骤的具体细节。

举例:

2020年1月1号,A公司有一个小游戏项目组开始开发一款游戏——开发单机闯关打斗类游戏(类似街机打拳类游戏)。

游戏策划需求:游戏主角都是个战士(攻击力不够强,生命值比较多,抗揍),主角通过不断的往前走来闯关,遇到敌人就进行攻击,

主角:生命值——1000(为0时主角死亡,游戏结束),魔法值——0(暂时用不上,保留),攻击力——200(打敌人一下敌人失去多少点声明值) 三个属性。

         //敌人也会反击,敌人也会距离近时主动攻击主角。
         //主角:生命值——1000(为0时主角死亡,游戏结束),魔法值——0(暂时用不上,保留),攻击力——200(打敌人一下敌人失去多少点声明值) 三个属性。
         //技能“燃烧”——使用该技能可以使附近所有敌人每人失去500点生命值,但是主角自身也会损失掉300点生命值。

2020年2月1号,游戏扩展,增加 法师 作为主角

    //增加 法师 作为主角(攻击力很强,生命值比较少,不抗揍)
        //主角:生命值——800,魔法值——200(暂时用不上,保留),攻击力——300  三个属性。 
        //技能“燃烧”——使用该技能可以使附近所有敌人每人失去650点生命值,但是主角自身会损失掉100点魔法值。

2020年3月1号,游戏扩展,增加牧师 作为主角
 

    //增加 牧师 作为主角(攻击力很弱,生命值比较少,不抗揍)
        //主角:生命值——300,魔法值——500(暂时用不上,保留),攻击力——200  三个属性。 
        //技能“燃烧”——使用该技能可以使附近所有敌人每人失去200点生命值,给自身英雄恢复200点生命值,但是主角自身会损失掉200点魔法值。

2020年4月1号, 还有扩展,5.1还有扩展。。。。

我们能知道的是:随着游戏的变化,我们应该怎么设计呢?我们和游戏策划讨论后,规定:后续不管有多少新加入的角色,他的技能都可以分为如下的几种,

1.对于敌人的影响

2.对于自己数值的影响(包括友军)

3.动画效果(在这里,假定只有一种动画,这里只是想处理没有 差别的具体的方法实现,实际开发过程中,每次打击的动画效果,都应该不一样才合理)

4.自身特殊的技能(例如节假日搞的一些活动)

由于技能攻击行为每一个步骤都是确定的,那么 针对 这个攻击的行为,我们在这里使用 "模版方法"来完成

三 "模板方法(Template Method)模式"的一般实现

// 001templatemethod.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// 模版方法模式
//战士主角:生命值——1000(为0时主角死亡,游戏结束),魔法值——0(暂时用不上,保留),攻击力——200(打敌人一下敌人失去多少点声明值) 三个属性。//技能“燃烧”——使用该技能可以使附近所有敌人每人失去500点生命值,但是主角自身也会损失掉300点生命值。//法师主角(攻击力很强,生命值比较少,不抗揍)//主角:生命值——800,魔法值——200(暂时用不上,保留),攻击力——300  三个属性。 //技能“燃烧”——使用该技能可以使附近所有敌人每人失去650点生命值,但是主角自身会损失掉100点魔法值。
//注意,在此程序中,我们只是用了 生命值,魔法值,和“燃烧”技能的参数,目的是为了学习 “模版方法”。#include <iostream>
#include <string>
#include <crtdbg.h>
using namespace std;//Hero 为父类,代表每个英雄的共同点
class Hero {public:Hero(string name,int left,int magic):m_name(name),m_left(left),m_magic(magic) {}virtual ~Hero() {}public://1.对于敌人的影响
//	2.对于自己数值的影响(包括友军)
//	3.动画效果(在这里,假定只有一种动画,这里只是想处理没有 差别的具体的方法实现,实际开发过程中,每次打击的动画效果,都应该不一样才合理)
//	4.自身特殊的技能(例如节假日搞的一些活动)void JNattack() {if (!canuseJN()) {return;}effortEnemy();effortSelf();animation_effects();selfCustomize();}private:virtual void effortEnemy()=0;virtual void effortSelf()=0;void  animation_effects() {cout << "Hero's animation_effects" << endl;}virtual void selfCustomize()=0;virtual bool canuseJN()=0;protected:string m_name; //名字int m_left; //生命值int m_magic;// 蓝量
};//1.战士class zhanshiHero :public Hero {
public :zhanshiHero(string name, int left, int magic) :Hero(name, left, magic) {}private:virtual void effortEnemy() {cout << "zhanshiHero JNattack effortEnemy " << endl;}virtual void effortSelf() {cout << "zhanshiHero JNattack effortSelf left-200 " << endl;m_left -= 300;}virtual void selfCustomize() {cout << "zhanshiHero JNattack selfCustomize something " << endl;}virtual bool canuseJN() {if (this->m_left - 300 >= 0) {cout << "zhanshi  血量剩余: " << this->m_left <<  "  可以使用技能" << endl;return true;}else {cout << "zhanshi 血不够300,无法使用技能 血量剩余" <<this->m_left <<  endl;return false;}}
};//2.法师class fashiHero :public Hero {
public:fashiHero(string name, int left, int magic) :Hero(name, left, magic) {}private:virtual void effortEnemy() {cout << "fashiHero JNattack effortEnemy " << endl;}virtual void effortSelf() {cout << "fashiHero JNattack effortSelf magic-100 " << endl;m_magic -= 100;}virtual void selfCustomize() {cout << "fashiHero JNattack selfCustomize something " << endl;}virtual bool canuseJN() {if (this->m_magic - 100 >= 0) {cout << "fashi  蓝量剩余: " << this->m_magic << "  可以使用技能" << endl;return true;}else {cout << "fashi 蓝量剩余: " << this->m_magic << "  无法使用技能" << endl;return false;}}
};int main()
{std::cout << "Hello World!\n";zhanshiHero *pherozs = new zhanshiHero("zszhangsan", 1000, 0);Hero *pherofs = new fashiHero("fslisi", 800, 200);//Hero *pherofs1111111111 = new fashiHero("aaaa", 80880, 2800);pherozs->JNattack();pherozs->JNattack();pherozs->JNattack();pherozs->JNattack();pherozs->JNattack();cout << "----------------" << endl;pherofs->JNattack();pherofs->JNattack();pherofs->JNattack();cout << "---------******************-------" << endl;delete pherozs;delete pherofs;_CrtDumpMemoryLeaks();return 1;
}

四 "模板方法(Template Method)模式"的扩展

http://www.mmbaike.com/news/74788.html

相关文章:

  • 全网商机app招标资源网站优化排名优化
  • 网站设计服务品牌推广渠道有哪些
  • 营销网站案例帮我搜一下长沙做网络销售
  • 网站发布信息的基本流程咸宁网站seo
  • 公司建设网站需要什么条件小吃培训机构排名前十
  • 可以免费做试卷题目的网站郑州做网站的专业公司
  • 玉环做网站有哪些最近新闻内容
  • 做网站工作职责网站关键词优化排名软件系统
  • 淄博政府做网站哪家好谷歌浏览器下载安装
  • 成都医院做网站建设百度基木鱼建站
  • 优秀个人网站主页北京网站建设公司报价
  • 平面广告设计图片海报成都网站优化平台
  • 网站开发(源代码)深圳设计公司
  • 在闲鱼可以做网站吗如何优化培训方式
  • 口碑好的企业网站建设百度提问
  • 简述网站开发步骤十大互联网平台
  • 做h5网站廊坊百度关键词排名平台
  • 关于进一步加强门户网站建设今日疫情最新数据
  • 深圳比较好的网站设计公司今日最新体育新闻
  • 海洋cms怎么做电影网站百度应用商店app下载
  • 网站百度秒收百度收录的网页数量
  • 什么是网络营销?网络营销有哪些特点?深圳网站快速排名优化
  • 关于网络的网站怎么做进入百度知道首页
  • 建网站的经历免费seo提交工具
  • 青岛网站优化网站怎么做推广
  • 网站空间香港主机新媒体营销六种方式
  • 廊坊网站自助建站如何宣传自己的网站
  • 做网站的参考文献有哪些百度识图在线识别
  • 网站502 解决办法三只松鼠网络营销策略
  • 做餐饮系统网站建设想学网络营销怎么学