简单工厂模式相关类的创建和使用步骤如下:
- 创建一个新的类, 可以将这个类称之为工厂类。对于简单工厂模式来说,需要的工厂类只有一个。
- 在这个工厂类中添加一个公共的成员函数,通过这个函数来创建我们需要的对象,关于这个函数一般将其称之为工厂函数。
- 关于使用,首先创建一个工厂类对象,然后通过这个对象调用工厂函数,这样就可以生产出一个指定类型的实例对象了。
另注:可以使用多态解决拿到createCar(Type type)的返回值之后,还需要将其转换成实际的Car类型,处理繁琐的问题。
#include <iostream>
using namespace std;
class AbstractCar
{
public:
virtual void ability() {}
virtual ~AbstractCar() {}
};
// MiniCar
class MiniCar : public AbstractCar
{
public:
void ability() override
{
cout << "可以开MiniCar去旅行" << endl;
}
};
// Tank
class Tank: public AbstractCar
{
public:
void ability() override
{
cout << "可以开Tank去打仗" << endl;
}
};
//Truck
class Truck : public AbstractCar
{
public:
void ability() override
{
cout << "可以开Truck去运货" << endl;
}
};
// 工厂类
enum class Type:char{MiniCar, Tank,Truck};
class CarFactory
{
public:
CarFactory() {}
~CarFactory() {}
AbstractCar* createCar(Type type)
{
AbstractCar* ptr = nullptr;
switch (type)
{
case Type::MiniCar:
ptr = new MiniCar;
break;
case Type::Tank:
ptr = new Tank;
break;
case Type::Truck:
ptr = new Truck;
break;
default:
break;
}
return ptr;
}
};
int main()
{
CarFactory* factory = new CarFactory;
//使用多态解决拿到createCar(Type type)的返回值之后,还需要将其转换成实际的类型,处理起来比较繁琐的问题。
AbstractCar* obj = factory->createCar(Type::Tank);
obj->ability();
return 0;
}