当前位置: 首页 > 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_ptrItemStrategy 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_ptrItemStrategy 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_ptrM_Undead pobj) // 攻击亡灵类怪物{pobj-getinfo(); // 可以调用亡灵类怪物相关的成员函数}public:void attack_enemy_element(const shared_ptrM_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_ptrMonster pobj) // 击杀怪物{pobj-getinfo(); // 可以调用怪物相关的成员函数}}; }int main() { #if 0using namespace ns0;shared_ptrFighter prole_war(new F_Warrior(1000, 0, 200)); // 这没有采用工厂模式如果主角很多可以考虑采用工厂模式创建对象prole_war-UseItem(LF_DHD); #endif#if 0using namespace ns1;// 创建主角shared_ptrFighter prole_war(new F_Warrior(1000, 0, 200));// 吃一颗大还丹prole_war-SetItemStrategy(make_sharedItemStrategy_DHD()); // 主角设置大还丹策略准备吃大还丹prole_war-UseItem(); // 主角吃大还丹// 再吃一颗补血丹shared_ptrItemStrategy strateby2(new ItemStrategy_BXD()); // 创建补血丹策略prole_war-SetItemStrategy(strateby2); // 主角设置补血丹策略准备吃补血丹prole_war-UseItem(); // 主角吃补血丹 #endif#if 0using namespace ns2;shared_ptrF_Warrior pobjwar(new F_Warrior());pobjwar-attack_enemy_undead(make_sharedM_Undead()); // 攻击一只亡灵类怪物shared_ptrM_Element pobjelm(new M_Element());pobjwar-attack_enemy_element(pobjelm); // 攻击一只元素类怪物 #endif#if 1using namespace ns3;shared_ptrF_Warrior pobjwar(new F_Warrior());pobjwar-attack_enemy(make_sharedM_Undead()); // 攻击一只亡灵类怪物shared_ptrMonster pobjelm(new M_Element());pobjwar-attack_enemy(pobjelm); // 攻击一只元素类怪物 #endifreturn 0; }
http://www.hkea.cn/news/14524109/

相关文章:

  • 51个人网站网络推广软件排行
  • 浙江建设职业技术学院提前招网站注册一个域名需要多少钱
  • 学校网站做等级保护长春网站制作都找源晟27
  • 青海省住房和城乡建设部网站浙江网站建设推广公司十大排行
  • 建设银行北海分行网站六年级做的网站的软件下载
  • 用vs做网站表格向上居中网页设计与网站建设试题及答案
  • 网站备案注销原因网页源码怎么做网站
  • 建设一个同城购物网站开发公司将购房款划给总公司的法律责任
  • 镇江市网站建设成都个人学做网站
  • 网站建设的三种方法肇庆seo按天收费
  • 建设银行企业网站访问不了交易平台网站程序
  • 中国住房和城乡建设部查询网站wordpress导航菜单图标设置
  • 用自己的电脑做网站划算关键词包括哪些内容
  • 网站不备案会怎样企业推广平台有哪些
  • 男生和女生做污的事情免费网站河南省建设厅证件证件查询网站
  • 做网站需要什么手续seo提供服务
  • 设计素材网站哪几个好用设计logo网站免费奇米
  • 购物网站的开发易企网络网站建设
  • 免费速建网站软件外包公司能去吗
  • 蒙古文政务网站群建设工作方案山东兴华建设集团有限公司网站拼音
  • 山东省建设厅执业资格注册中心网站网站虚拟主机 会计处理
  • wordpress网站速度慢开发wordpress 需要学习
  • 网站建设服务协议模板wordpress 插件评论区
  • php响应式网站开发百度云征信网站开发
  • 一级a做爰片在线看网站美食网站建设实施方案
  • 个人网站的制作论文南京一站式工程装饰装修网站
  • 360导航建设网站怎么建网站技术防护建设
  • 不需要丢链接可以百度收录的网站开发手机app游戏公司
  • 如何在手机上搭建网站灯饰网站开发
  • 贵阳网站设计哪家好上海有名网站建站开发公司