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_;
    };

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

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

  • 相关阅读:
    JSCover(查看代码覆盖率)
    vue的测试(Vue.js devtool)
    QUnit使用
    实现网站国际化
    hexo部署Github博客
    grunt实现修改代码实时刷新浏览器
    this指向问题
    gulp使用 实现文件修改实时刷新
    数据类型的判断
    template
  • 原文地址:https://www.cnblogs.com/chenggg/p/11332965.html
Copyright © 2011-2022 走看看