简单工厂模式 - 优缺点
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码
//filename factory.h
#include <iostream>
#include <string>
class Car
{
public:
std::string Drive();
virtual std::string Stop() = 0;
};
class RedCar :public Car
{
public:
std::string Drive() {
return "RedCar is Drived";
}
std::string Stop() {
return "RedCar is Stoped";
}
} ;
class BlueCar :public Car
{ //一定要从写父类,使用override
public:
std::string Drive() {
return "BlueCar is Drived";
}
std::string Stop() {
return "BlueCar is Stop";
}
} ;
//工厂类,来构造其实例
class CarFactory
{
//依赖类Car
public:
Car *Create(std::string CarType) {
if(CarType == "red") {
return new RedCar();
} else if(CarType == "blue" ) {
return new BlueCar();
} else
return nullptr;
}
};
使用实例:
#include "factory.h"
int main(){
CarFactory *carF = new CarFactory();
Car *car = carF->Create("red");//实例哪个类
return 0;
}