不同的游戏可以创建MazeGame的子类,以特别指明一些迷宫的部件。MazeGame子类可以重定义一些或所有的工厂方法以指定产品中的变化。 如:
class BombedMazeGame: public MazeGame {
public:
BombedMazeGame();
virtual Wall* MakeWall() const
{ return new BombedWall; }
virtual Room* MakeRoom(int n) const
{ return new RoomWithABomb(n); }
};
相关模式 Abstract Factory经常用工厂方法实现; 在Template Method中被调用 Prototypes不需要创建Creator的子类,但是它们通常要求一个针对Product类的Initialize操作。Creator使用Initialize来初始化对象,而Factory Method不需要这样的操作。
参考资料: 《设计模式》