意图
提供一个创建一系列相关或相互依赖对象的接口而无须指定它们的类
例子
还是书上的
CODE
class MazeFactory{
public:
MazeFactory();
virtual Maze* MakeMaze() const{
return new Maze;
}
virtual Wall* MakeWall() const{
return new Wall;
}
virtual Room* MakeRoom(int n){
return new Room(n);
}
virtual Door* MakeDoor(Room* r1,Room* r2){
return new Door(r1,r2);
}
};
上面的MazeFactory{类提供了四个接口
这四个接口分别用于创建四个相关联类型的对象 Maze Wall Room Door,
当其它对象调用这四个对象时 只要调用MazeFactory类中对应的接口就可以了
而不必指明需要哪个具体的类进行创建
这样 你可以定义四个抽象基类做为接口的返回值
在接口的实现中定义具体实现的类 如跨平台的 可以定义接口返回中为某个抽象类如
class A{
DrawLine();
};
对应平台上具体类
class B:public A{
DrawLine();//对应平台上具体画线方法
}
//工厂类 保存一系列这样的类 其它对象只知道要从这里调用就可以了 而不必知道要分别调用什么具体的子类
class AbstractFactory{
A* MakeA() const{
return new B(); //返回具体的类
};
};
通过这种形式把一系列相关的类给屏蔽了
方便进行调用
常用于跨平台的代码实现中
UML图没有找到
后面补充