工厂模式demo

211 阅读1分钟
// FactoryMode.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>

#include <memory>

using namespace std;

// 产品类
class IProduct
{
public:
	virtual void productRun() = 0;
};

class AdidasShoes :public IProduct
{
public:
	void productRun() override
	{
		cout << "生产阿迪达斯的鞋子" << endl;
	}
};


class NikeShoes :public IProduct
{
public:
	void productRun() override
	{
		cout << "生产Nike的鞋子" << endl;
	}
};

// 工厂类
class IFactory
{
public:
	virtual IProduct * produceProduct() = 0;
};

class AdidasFactory:public IFactory
{
public:
	IProduct * produceProduct() override
	{
		return new AdidasShoes();
	}
};

class NikeFactory :public IFactory
{
public:
	IProduct * produceProduct() override
	{
		return new NikeShoes();
	}
};

void TestFactoryMode()
{
	unique_ptr<AdidasFactory> objAdidasFactory(new AdidasFactory());
	IProduct* objAdidasProduct = objAdidasFactory->produceProduct();
	objAdidasProduct->productRun();

	unique_ptr<NikeFactory> objNikeFactory(new NikeFactory());
	IProduct* objNikeProduct = objNikeFactory->produceProduct();
	objNikeProduct->productRun();
}

int main()
{
	TestFactoryMode();
	system("pause");
    return 0;
}