C++ 简单工厂模式解析

简单工厂模式

简而言之,就是经过告诉厂商我要造什么东西,厂商就造什么出来给用户。c++

例如:一家工厂生产车,房子,飞机,用户告诉工厂我要造的东西,厂商生产出来给用户。ui

头文件:spa

#include "stdafx.h"

//定义一个产品列表
enum PRODUCTLIST
{
	CAR, //车
	HOUSE, //房子
	PLANE, //飞机
};

//用户购买类
class UserBuy {
public:
	UserBuy(PRODUCTLIST producttype);

	void beginBuy();

private:
	PRODUCTLIST m_producttype;

};


//产品基类
class Product {
public:
	virtual void BeginProduct() = 0;
};

//生产汽车类
class CarProduct:public Product
{
public:
	void BeginProduct();
};

//生产房子类
class HouseProduct:public Product
{
public:
	void BeginProduct();
};

//生产飞机类
class PlaneProduct:public Product
{
public:
	void BeginProduct();
};
复制代码

主要方式是经过抽象类继承类实现不一样类型产品的生产code

实现cpp文件cdn

// SimpleFactory.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "SimpleFactory.h"
using namespace std;

UserBuy::UserBuy(PRODUCTLIST producttype)
{
	m_producttype = producttype;
}

//开始购买
void UserBuy::beginBuy()
{
	Product * p_curproduct = nullptr;
	if (m_producttype == PLANE)
	{
		p_curproduct = new PlaneProduct();
		p_curproduct->BeginProduct();
	}
	if (m_producttype == CAR)
	{
		p_curproduct = new CarProduct();
		p_curproduct->BeginProduct();
	}
	if (m_producttype == HOUSE)
	{
		p_curproduct = new HouseProduct();
		p_curproduct->BeginProduct();
	}
}

void PlaneProduct::BeginProduct()
{
	cout << "正在造飞机" << endl;
}

void CarProduct::BeginProduct()
{
	cout << "正在造汽车" << endl;
}

void HouseProduct::BeginProduct()
{
	cout << "正在造房子" << endl;
}


int _tmain(int argc, _TCHAR* argv[])
{
	UserBuy * carbuy = new UserBuy(CAR);
	carbuy->beginBuy();
	UserBuy * housebuy = new UserBuy(HOUSE);
	housebuy->beginBuy();
	UserBuy * planebuy = new UserBuy(PLANE);
	planebuy->beginBuy();

	return 0;
}


复制代码

运行结果:blog

但愿对你们有帮助,其实也帮助本身更熟悉简单工厂模式。继承

相关文章
相关标签/搜索