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

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

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

  • 相关阅读:
    mysql中的enum型
    mysql中的时间year/date/time/datetime
    一些数字的属性
    mysql增删
    Perl6 Bailador框架(8):自定义400/500
    react: typescript jest && enzyme
    webstorm tslint配置
    react: typescript import images alias
    JSONP原理及简单实现
    纯css画三角形
  • 原文地址:https://www.cnblogs.com/chenggg/p/11332965.html
Copyright © 2011-2022 走看看