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

网站建设餐饮网络营销策划方案书范文

网站建设餐饮,网络营销策划方案书范文,域名注册成功了然后怎么做,注册域名的官方网站《C新经典设计模式》之第4章 策略模式 策略模式.cpp 策略模式.cpp #include <iostream> #include <memory> using namespace std;// if或switch分支不稳定&#xff0c;经常改动时&#xff0c;考虑引入算法独立到策略类中去实现// 依赖倒置原则 // 高层组件不应该依…

《C++新经典设计模式》之第4章 策略模式

        • 策略模式.cpp

策略模式.cpp
#include <iostream>
#include <memory>
using namespace std;// if或switch分支不稳定,经常改动时,考虑引入算法独立到策略类中去实现// 依赖倒置原则
// 高层组件不应该依赖于底层组件(具体实现类),两者都应该依赖于抽象层
// 面向接口(抽象层)编程,而不是针对实现(实现类)编程namespace ns0
{enum ItemAddlife // 增加补充生命值道具{LF_BXD, // 补血丹LF_DHD, // 大还丹LF_SHD, // 守护丹};class Fighter{protected:int m_life; // 人物生命值int m_magic;int m_attack;public:Fighter(int life, int magic, int attack) : m_life(life), m_magic(magic), m_attack(attack) {}virtual ~Fighter() {}public:void UseItem(ItemAddlife djtype) // 吃药补充生命值{switch (djtype) // 道具类型{case LF_BXD:       // 补血丹m_life += 200; // 补充200点生命值// if (主角中毒了)//{//     停止中毒状态,也就是主角吃药后就不再中毒// }// if (主角处于狂暴状态){m_life += 400;  // 额外再补充400点生命值m_magic += 200; // 魔法值也再补充200点}break;case LF_DHD:       // 大还丹m_life += 300; // 补充300点生命值break;case LF_SHD:       // 守护丹m_life += 500; // 补充500点生命break;}}};class F_Warrior : public Fighter // “战士”类{public:F_Warrior(int life, int magic, int attack) : Fighter(life, magic, attack) {}};class F_Mage : public Fighter // “法师”类{public:F_Mage(int life, int magic, int attack) : Fighter(life, magic, attack) {}};
}namespace ns1
{class Fighter;class ItemStrategy // 道具策略类的父类{public:virtual ~ItemStrategy() {}virtual void UseItem(Fighter *const mainobj) = 0;};// 战斗者父类class Fighter{shared_ptr<ItemStrategy> itemstrategy;protected:int m_life; // 人物生命值int m_magic;int m_attack;public:Fighter(int life, int magic, int attack) : m_life(life), m_magic(magic), m_attack(attack) {}virtual ~Fighter() {}public:void SetItemStrategy(const shared_ptr<ItemStrategy> &strategy) { itemstrategy = strategy; } // 设置道具使用的策略void UseItem() { itemstrategy->UseItem(this); }                                             // 使用道具(吃药)int GetLife() const { return m_life; }void SetLife(int life) { m_life = life; }};class F_Warrior : public Fighter // “战士”类{public:F_Warrior(int life, int magic, int attack) : Fighter(life, magic, attack) {}};class F_Mage : public Fighter // “法师”类{public:F_Mage(int life, int magic, int attack) : Fighter(life, magic, attack) {}};class ItemStrategy_BXD : public ItemStrategy // 补血丹策略类{public:void UseItem(Fighter *const mainobj) override { mainobj->SetLife(mainobj->GetLife() + 200); }};class ItemStrategy_DHD : public ItemStrategy // 大还丹策略类{public:void UseItem(Fighter *const mainobj) override { mainobj->SetLife(mainobj->GetLife() + 300); }};class ItemStrategy_SHD : public ItemStrategy // 守护丹策略类{public:void UseItem(Fighter *const mainobj) override { mainobj->SetLife(mainobj->GetLife() + 500); }};
}namespace ns2
{class M_Undead // 亡灵类怪物{public:void getinfo() const { cout << "M_Undead" << endl; }};class M_Element // 元素类怪物{public:void getinfo() const { cout << "M_Element" << endl; }};class M_Mechanic // 机械类怪物{public:void getinfo() const { cout << "M_Mechanic" << endl; }};class F_Warrior // 战士主角{public:void attack_enemy_undead(const shared_ptr<M_Undead> &pobj) // 攻击亡灵类怪物{pobj->getinfo(); // 可以调用亡灵类怪物相关的成员函数}public:void attack_enemy_element(const shared_ptr<M_Element> &pobj) // 攻击元素类怪物{pobj->getinfo(); // 可以调用元素类怪物相关的成员函数}};
}namespace ns3
{class Monster // 作为所有怪物类(抽象层){public:virtual ~Monster() {}virtual void getinfo() const = 0; // 纯虚函数};class M_Undead : public Monster // 亡灵类怪物{public:void getinfo() const override { cout << "M_Undead" << endl; }};class M_Element : public Monster // 元素类怪物{public:void getinfo() const override { cout << "M_Element" << endl; }};class M_Mechanic : public Monster // 机械类怪物{public:void getinfo() const override { cout << "M_Mechanic" << endl; }};class F_Warrior // 战士主角{public:void attack_enemy(const shared_ptr<Monster> &pobj) // 击杀怪物{pobj->getinfo(); // 可以调用怪物相关的成员函数}};
}int main()
{
#if 0using namespace ns0;shared_ptr<Fighter> prole_war(new F_Warrior(1000, 0, 200)); // 这没有采用工厂模式,如果主角很多,可以考虑采用工厂模式创建对象prole_war->UseItem(LF_DHD);
#endif#if 0using namespace ns1;// 创建主角shared_ptr<Fighter> prole_war(new F_Warrior(1000, 0, 200));// 吃一颗大还丹prole_war->SetItemStrategy(make_shared<ItemStrategy_DHD>()); // 主角设置大还丹策略,准备吃大还丹prole_war->UseItem();                                        // 主角吃大还丹// 再吃一颗补血丹shared_ptr<ItemStrategy> strateby2(new ItemStrategy_BXD()); // 创建补血丹策略prole_war->SetItemStrategy(strateby2);                      // 主角设置补血丹策略,准备吃补血丹prole_war->UseItem();                                       // 主角吃补血丹
#endif#if 0using namespace ns2;shared_ptr<F_Warrior> pobjwar(new F_Warrior());pobjwar->attack_enemy_undead(make_shared<M_Undead>()); // 攻击一只亡灵类怪物shared_ptr<M_Element> pobjelm(new M_Element());pobjwar->attack_enemy_element(pobjelm); // 攻击一只元素类怪物
#endif#if 1using namespace ns3;shared_ptr<F_Warrior> pobjwar(new F_Warrior());pobjwar->attack_enemy(make_shared<M_Undead>()); // 攻击一只亡灵类怪物shared_ptr<Monster> pobjelm(new M_Element());pobjwar->attack_enemy(pobjelm); // 攻击一只元素类怪物
#endifreturn 0;
}
http://www.ds6.com.cn/news/76545.html

相关文章:

  • 怎么建立网站推广制作网页设计公司
  • 中国网站设计模板市场监督管理局是干什么的
  • 公司网站建设预算重庆关键词优化软件
  • 怎么做网站关键词库排名百度查重免费
  • 平台式网站模板下载百度推广代理商加盟
  • 有没有人一起做网站线上推广方式
  • 温州网站建设有限公司网络游戏推广员的真实经历
  • 外贸综合服务网站建设网站建设的意义和作用
  • 做打折的淘宝小卖家的网站襄阳网站推广优化技巧
  • 网站开发技术可行性关键词查询工具有哪些
  • 太原做网站站长统计在线观看
  • 济南市历下区建设委员会网站青岛关键词推广seo
  • 做fitting网站seo网站推广排名
  • 多大的服务器可以做视频网站bing搜索
  • wordpress 博客 注册福州网站seo公司
  • 宁波网站建设费用百度引流怎么推广
  • 做软件赚钱还是做网站赚钱友链网站
  • 合肥门户网站建设东莞seo排名外包
  • 怎么做文学动漫网站搜索引擎排名优化公司
  • 工信部 网站备案材料 复印件 电子版互联网营销师培训内容
  • 网站开发背景设置苏州百度关键词优化
  • 青岛做外贸网站建设广告投放方式
  • 网页推广怎么做的广州软件系统开发seo推广
  • 网页设计包括哪些无线网络优化是做什么的
  • 泊头市建设局网站厦门seo排名收费
  • 网站做301关键词分析软件
  • 隐私页 wordpressseo怎么做关键词排名
  • 网站建设一秒互联百度关键词推广可以自己做吗
  • 做区块链网站需要注意哪些发布平台有哪些
  • 门户网站平台建设情况软件推广方案经典范文