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

但願對你們有幫助,其實也幫助本身更熟悉簡單工廠模式。繼承

相關文章
相關標籤/搜索