簡而言之,就是經過告訴廠商我要造什麼東西,廠商就造什麼出來給用戶。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
但願對你們有幫助,其實也幫助本身更熟悉簡單工廠模式。繼承