设计模式(3) 工厂方法(Factory Mehod)(二)

2014-11-24 03:31:48 · 作者: · 浏览: 1
{ return new Wall;} virtual Door* MakeDoor(Room* r1, Room* r2) const { return new Door(r1, r2); } }
不同的游戏可以创建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不需要这样的操作。


参考资料: 《设计模式》