--来自《设计模式:可复用面向对象软件的基础》
目的
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Class MazePrototypeFactory :public MazeFactory
{
Public:
MazePrototypeFactory (Maze*, Wall*, Room*, Door*);
Virtual Maze* MakeMaze() const;
Virtual Room* MakeRoom(int) const;
Virtual Wall* MakeWall() const;
Virtual Door* MakeDoor() const;
Private:
Maze* _prototypeMaze;
Room* _prototypeRoom;
Wall* _prototypeWall;
Door* _prototypeDoor;
};
MazePrototypeFactory::MazePrototypeFactory (Maze* m, Wall* w, Room* r, Door* d)
{
_prototypeMaze = m;
_prototypeRoom = r;
_prototypeWall = w;
_prototypeDoor = d;
};
Wall* MazePrototypeFactory::prototypeWall()
{
Return prototypeWall->Clone();
};
//使用基本迷宫构建的原型进行初始化。
//普通的
MazePrototypeFactorysimpleMazeFactory(new Maze, new Wall, new Room, new Door);
//Bombed
MazePrototypeFactorybombedMazeFactory(new Maze, new BombedWall, new RoomWithABomb, new Door);