//产品父类声明
#pragma once
#include "iostream"
using namespace std;
class Product
{
public:
virtual void PrintfName();
Product(void);
~Product(void);
};
//产品A类
#pragma once
#include "product.h"
class ProductA :
public Product
{
public:
virtual void PrintfName();
ProductA(void);
~ProductA(void);
};
#include "ProductA.h"
ProductA::ProductA(void)
{
}
ProductA::~ProductA(void)
{
}
void ProductA::PrintfName()
{
cout<<"This is ProductA"<<endl;
}
//产品B类
#pragma once
#include "Product.h"
class ProductB :
public Product
{
public:
virtual void PrintfName();
ProductB(void);
~ProductB(void);
};
#include "ProductB.h"
ProductB::ProductB(void)
{
}
ProductB::~ProductB(void)
{
}
void ProductB::PrintfName()
{
cout<<"This is ProductB"<<endl;
}
//创建父类声明
#pragma once
#include "Product.h"
class Creator
{
public:
virtual Product* GetProduct()=0;
Creator(void);
~Creator(void);
};
////产品A的创建
#pragma once
#include "ProductA.h"
#include "creator.h"
class CreatorA:
public Creator
{
public:
virtual ProductA* GetProduct();
CreatorA(void);
~CreatorA(void);
};
#include "CreatorA.h"
CreatorA::CreatorA(void)
{
}
ProductA* CreatorA::GetProduct()
{
return (new ProductA());
}
CreatorA::~CreatorA(void)
{
}
//产品B的创建
#pragma once
#include "creator.h"
#include "ProductB.h"
class CreatorB :
public Creator
{
public:
virtual ProductB* GetProduct();
CreatorB(void);
~CreatorB(void);
};
#include "CreatorB.h"
CreatorB::CreatorB(void)
{
}
CreatorB::~CreatorB(void)
{
}
ProductB *CreatorB::GetProduct()
{
return (new ProductB());
}
// Factory.cpp : 定义控制台应用程序的入口点。
//工厂模式调用
#include "stdafx.h"
#include "Creator.h"
#include "CreatorA.h"
#include "CreatorB.h"
#include "ProductA.h"
#include "ProductB.h"
int _tmain(int argc, _TCHAR* argv[])
{
Creator* ca=new CreatorA();
Creator* cb=new CreatorB();
Product* pa=ca->GetProduct();
Product* pb=cb->GetProduct();
pa->PrintfName();
pb->PrintfName();
getchar();
delete ca;
delete cb;
delete pa;
delete pb;
return 0;
}