C++ 简单工厂(静态工厂方法)

定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例
在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)
需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
假设有一个工厂,他能生产出A、B两种产品。当客户需要产品的时候一定要告诉共产是哪种产品,是A还是B。当新增加一种新产品的时候,那么就要去修改工厂的类。 

 

#include <iostream>
#include <windows.h>
using namespace std;

enum E_CAR_TYPE
{
	E_CAR_TYPE_BENZ = 1, // 奔驰
	E_CAR_TYPE_BMW = 2, // 宝马
};

class Car
{
public:
	virtual void CreateCar(void) = 0;
};

class BenzCar :public Car // 奔驰车
{
public:
	BenzCar()
	{
		cout <<"BenzCar::Benz()" << endl;
	}
	virtual void CreateCar(void)
	{
		cout <<"BenzCar::CreateBenz Car" << endl;
	}

	~BenzCar()
	{

	}
};

class BmwCar :public Car // 宝马车
{
public:
	BmwCar()
	{
		cout <<"BmwCar:Car" << endl;
	}
	virtual void CreateCar(void)
	{
		cout << "BmwCar::CreateBmw Car" << endl;
	}
};

class Facory
{
public:
	Car *CreateSpecifiCar(E_CAR_TYPE eType)
	{
		Car *pCar = NULL;
		switch(eType)
		{
			case E_CAR_TYPE_BENZ: // 奔驰
				{
					pCar = new BenzCar();
				}
				break;
			case E_CAR_TYPE_BMW:  // 宝马
				{
					pCar = new BmwCar();
				}
				break;
			default:
				break;
		}

		return pCar;
	}
};

int main()
{
	Facory mFactory;
	Car* mpCarOne = mFactory.CreateSpecifiCar(E_CAR_TYPE_BENZ);
	Car* mpCarTwo = mFactory.CreateSpecifiCar(E_CAR_TYPE_BMW);

	mpCarOne->CreateCar();
	mpCarTwo->CreateCar();

	delete mpCarOne;
	delete mpCarTwo;

	system("pause");
	return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值