zoukankan      html  css  js  c++  java
  • gof-原型模式

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

      与面向过程相比面向对象的特性是将状态(数据)和行为(逻辑)绑定在一起,基于类的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_;
    };

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

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

  • 相关阅读:
    CF1540B Tree Array
    CF1539F Strange Array
    CF526F Pudding Monsters
    怎样用 VS 2017 编译 cpprestsdk 库
    【转】C语言中常见的内存错误与解决方法
    vs2019 windbg方式远程调试应层程序
    关于 类似QQ 长截图的方案
    AIX小型机
    vSphere
    Git的使用
  • 原文地址:https://www.cnblogs.com/chenggg/p/11332965.html
Copyright © 2011-2022 走看看