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

烟台市芝罘区住房和建设局网站招远网站

烟台市芝罘区住房和建设局网站,招远网站,办网站 哪些许可,建设局网站公告定义 定义类型对象类和有类型的对象类。每个类型对象实例代表一种不同的逻辑类型。 每种有类型的对象保存对描述它类型的类型对象的引用。 定义往往不是人能看懂的#xff0c;我们需要例子才能够理解。 举例 假设你要为一款游戏制作一些怪物敌人。这些敌人有不同的血量及攻…定义 定义类型对象类和有类型的对象类。每个类型对象实例代表一种不同的逻辑类型。 每种有类型的对象保存对描述它类型的类型对象的引用。 定义往往不是人能看懂的我们需要例子才能够理解。 举例 假设你要为一款游戏制作一些怪物敌人。这些敌人有不同的血量及攻击模式。 你会怎么写 最容易想到的就是哦我先写一个Monster抽象基类里边定义了基本的属性和抽象方法然后让子类继承这个基类来制造特定的敌人。就像这样 class Monster { public:virtual ~Monster() {}virtual const char* getAttack() 0;protected:Monster(int startingHealth): health_(startingHealth){}private:int health_; // 当前血值 };class Dragon : public Monster { public:Dragon() : Monster(230) {}virtual const char* getAttack(){return The dragon breathes fire!;} };class Troll : public Monster { public:Troll() : Monster(48) {}virtual const char* getAttack(){return The troll clubs you!;} };那从类图上来看就是这样的 那么问题来了每次你要创造一个新的种类的敌人即使这些敌人仅仅是名字不一样其属性和行为都差不多你都得写代码。 你需要新建一个类然后继承Monster再定义其血量以及攻击方法。你的时间都会花在写这几行代码上。如果策划要做几百个这样的敌人你就得写几百个这种类。同时如果策划要修改某些属性比如health你就得打开VS修改然后重新编译…这实在是太浪费时间了。 但我们如果使用类型对象模式我们就可以这么做 我们重构代码让每个怪物有品种。 不是让每个品种继承Monster我们现在有单一的Monster类和Breed类。 Monster类就是怪物类Breed类则作为引用保存在怪物类中。通过这个系统游戏中的每个怪物都是Monster的实例。 Breed类包含了在不同品种怪物间分享的信息开始血量和攻击字符串。 代码就是这样 class Breed { public:Breed(int health, const char* attack): health_(health),attack_(attack){}int getHealth() { return health_; }const char* getAttack() { return attack_; }private:int health_; // 初始血值const char* attack_; };class Monster { public:Monster(Breed breed): health_(breed.getHealth()),breed_(breed){}const char* getAttack(){return breed_.getAttack();}private:int health_; // 当前血值Breed breed_; };通过这种方法为了获得攻击字符串一个怪兽可以调用它品种的方法进行attack。 Breed类本质上定义了一个怪物的类型这就是为啥这个模式叫做类型对象。 通过这种方法我们就可以不需要打开VS重新写类来创造新类型了。我们只需要修改Breed所在的配置文件的数据就可以轻松地创造出无数种新怪物。 类型对象模式的本质就是将部分的类型系统从硬编码的继承结构中拉出放到可以在运行时定义的数据中去。 总结 我们回顾下定义现在就非常直观了 定义类型对象类Breed和有类型的对象类Monster。每个类型对象实例代表一种不同的逻辑类型。 每种有类型的对象保存对描述它类型的类型对象的引用。 实例相关的数据被存储在有类型对象的实例中被同种类分享的数据或者行为存储在类型对象中。 引用同一类型对象的对象将会像同一类型一样运作。 这让我们在一组相同的对象间分享行为和数据就像子类让我们做的那样但没有固定的硬编码子类集合。 原文链接 类型对象 · Behavioral Patterns · 游戏设计模式 (tkchu.me)
http://www.pierceye.com/news/289087/

相关文章:

  • 建设银行网上银行网站可以开通网银wordpress 种子插件
  • 一般网站图标是用什么做的网件路由器无线中继
  • 手机 网站 开发淘宝店铺网站策划书
  • 网站建设规划方案书滨州网站建设 中企动力
  • 网站建设品牌推荐做网站必须要公网ip
  • 做网站卖东西赚钱wordpress微信网站
  • 商丘网站建设有限公司店面设计费用
  • 张店学校网站建设公司合肥有哪些seo网络公司
  • 做博客网站的空间容量需要多少北京简盟产品设计有限公司
  • 哪些网站怎么进定制开发平台
  • 【郑州网站建设】wordpress自定义后台单页模板
  • 铭誉摄影网站北京网站建设开发
  • 单位还能建设网站吗做网站的程序员留备份
  • 松江团购做网站产品开发的基本流程
  • 织梦后台网站栏目空白小广告制作
  • 钦州建设局网站云南网站建设招商
  • 韩国风格网站php源码网站怎么放到服务器上
  • 网站调优yandex搜索引擎入口
  • 医院网站建设具体内容商丘网站制作电话
  • 别人做的网站直播网站
  • 足球梦网站建设的基本思路沧州做企业网站
  • 招标建设网站什么是微信wordpress
  • 建设银行网站连不上成都网站快照优化公司
  • 网站 永久关停 请示广州网站建设骏域网站
  • 个人建站模板外国网站翻墙怎么做
  • 保定网站设计制作公司有经验的中山网站建设
  • 免费网站建设那个好wordpress本地怎么上传服务器
  • 自己做的网站加载慢WordPress模板首页文件是啥
  • 教学网站建设网站建设岗位有哪些
  • 网站建设合同的验收表网页网站的区别是什么