创建MazeFactory的子类EnchantedMazeFactory,这是一个创建施了魔法的迷宫的工厂
class EnchantedMazeFactory : public MazeFactory {
public:
EnchantedMazeFactory();
virtual Room* MakeRoom(int n) const
{ return new EnchantedRoom(n , CastSpell()); }
virtual Door* MakeDoor(Room* r1, Room* r2) const
{ return new DoorNeedingSpell(r1, r2); }
protected:
spell* CastSpell() const;
};
CreateMaze方法接收一个EnchantedMazeFactory实例来建造施了魔法的迷宫
MazeGame game; EnchantedMazeFactory factory; game.CreateMaze(factory);
相关模式: AbstractFactory类通常用工厂方法实现,但它们也可以用原型(Prototype)实现。 一个具体的工厂通常是一个单件(Singleton)。
参考资料: 《设计模式》