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

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

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

  • 相关阅读:
    [JSOI2016]最佳团体
    CF125E MST Company
    CF482C Game with Strings
    CF379F New Year Tree
    CF1051F The Shortest Statement
    小a和uim之大逃离
    新魔法药水
    翻硬币
    [CQOI2017]小Q的棋盘
    UVA11729突击战
  • 原文地址:https://www.cnblogs.com/chenggg/p/11332965.html
Copyright © 2011-2022 走看看