--来自《设计模式:可复用面向对象软件的基础》
目的
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Class MazeBuilder
{
Public:
Virtual void BuildMaze();
Virtual void BuildRoom(int room);
Virtual void BuildDoor(int roomFrom, int roomTo);
Virtual Maze* GetMaze();
Protected:
MazeBuilder();
};
Maze*MazeGame::CreateMaze(MazeBuilder& build)
{
Builder.BuildMaze();
Builder.BuildRoom(1);
Builder.BuildRoom(2);
Builder.BuildDoor(1,2);
Return builder.GetMaze();
};
抽象工厂与生成器相似,主要的区别是生成器模式着重于一步步构造一个复杂对象。而抽象工厂着重于多个系列的产品对象。Builder在最后的一步返回,而对于Abstract Factory来说,产品是立即返回的。