简而言之,就是经过告诉厂商我要造什么东西,厂商就造什么出来给用户。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
但愿对你们有帮助,其实也帮助本身更熟悉简单工厂模式。继承