首页 > 其他 > 详细

gof-原型模式

时间:2019-08-10 22:31:06      阅读:272      评论:0      收藏:0      [点我收藏+]

原型模式:基于类的设计方案最终会出现 

  与面向过程相比面向对象的特性是将状态(数据)和行为(逻辑)绑定在一起,基于类的OOP设计方案会有些令人不舒服的设计

引用场景:规避代码冗余,简化行为操作

例子:

技术分享图片<-符号表示继承

class Monster
{
  //...
};
class Ghost : public Monster {};
class Demon : public Monster {};
class Sorcerer : public Monster {};
class Spawner
{
public:
  virtual ~Spawner() {}
  virtual Monster* spawnMonster() = 0;
};
class GhostSpawner : public Spawner
{
public:
  virtual Monster* spawnMonster()
  {
    return new Ghost();
  }
};
class DemonSpawner : public Spawner
{
public:
  virtual Monster* spawnMonster()
  {
    return new Demon();
  }
};
// 你懂的

提供一个生成器:

typedef Monster* (*SpawnCallback)();
class Spawner
{
public:
  Spawner(SpawnCallback spawn) : spawn_(spawn){}
  Monster* spawnMonster()
  {
    return spawn_();
  }
private:
  SpawnCallback spawn_;
};

这个例子感觉太模糊了  大多数人绝对不会蠢到用上面的方式创建对象

复制一段出自游戏编程模式这本书的原文拓展一下对原型的感受:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

gof-原型模式

原文:https://www.cnblogs.com/chenggg/p/11332965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!