概述 |
简单工厂模式是用单独的类来创建其它类的实例的一种创建型模式。
简单工厂模式实质是工厂类根据传入的参数,来动态决定创建哪一个产品的实例
优点 |
-
客户端与具体实现类解耦
-
不用考虑对象的创建过程
缺点 |
-
简单工厂模式,增加功能是通过修改源代码实现,不符合开闭原则
-
这个类的职责过重,这个类发生问题,会影响很多使用这个工厂的模块
使用场景 |
-
工厂类负责创建的产品类比较少,并且创建的产品不经常变更
-
客户端需要知道传入工厂类的参数,不需要关心如何创建对象
UML类图 |
实例 |
//抽象车
class AbstractCar{
public:
virtual void run() = 0;
};
//BMW
class BMW : public AbstractCar{
public:
virtual void run(){
std::cout << "BMW run!" << std::endl;
}
};
//BenZ
class BenZ : public AbstractCar{
public:
virtual void run(){
std::cout << "BenZ run!" << std::endl;
}
};
//汽车工厂
class CarFactory{
public:
static AbstractCar* CreateCar(string car){
if( "BMW" == car){
return new BMW;
}else if( "BenZ" == car){
return new BenZ;
}else{
return NULL;
}
}
};
void test01(){
CarFactory* factory = new CarFactory;
AbstractCar* car = factory->CreateCar("BMW");
car->run();
delete car;
car = NULL;
car = factory->CreateCar("BenZ");
car->run();
delete car;
car = NULL;
delete factory;
factory = NULL;
}
int main(){
test01();
return 0;
}