#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;
}