对象创建:
- SimpleFactory
- Factory Method
- Abstract Factory
- Prototype
- Builder
1.简单工厂
1.1调用方法
ICar *pCar = pFactory->CreateCar(Factory::BENZ_CAR);
1.2核心代码
enum CAR_TYPE {
BENZ_CAR, // 奔驰汽车
BMW_CAR, // 宝马汽车
AUDI_CAR // 奥迪汽车
};
// 生产汽车
ICar* CreateCar(CAR_TYPE type) {
ICar *pCar = NULL;
switch(type) {
case CAR_TYPE::BENZ_CAR:
pCar = new BenzCar(); // 奔驰汽车
break;
case CAR_TYPE::BMW_CAR:
pCar = new BmwCar(); // 宝马汽车
break;
case CAR_TYPE::AUDI_CAR:
pCar = new AudiCar(); // 奥迪汽车
break;
default:
break;
}
return pCar;
}
2.工厂方法
2.1调用方法
AFactory *pFactory = new BenzFactory();
ICar *pCar = pFactory->CreateCar();
2.2核心代码
// 奔驰工厂
class BenzFactory : public AFactory
{
public:
ICar* CreateCar() { return new BenzCar(); }
};