设计模式

目的

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);