프로토타입 패턴은 원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다.

 

5.1 몬스터 스포너

템플릿을 사용하여 해결하는 방법

class Spawner {
public:
  virtual ~Spawner() {}
  virtual Monster* spawnMonster() = 0;
};

template <class T>
class SpawnerFor : public Spawner {
public:
  virtual Monster* spawnMonster() { return new T(); }
};

//사용법
Spawner* ghostSpawner = new SpawnerFor<Ghost>();
Monster* monster_ghost = ghostSpawner->spawnMonster();

원형이 되는 인스턴스(Ghost)를 사용하여 생성할 객체(Spawner)의 종류를 명시하고 새로운 객체 (monster_ghost)를 생성한다.

+ Recent posts