//Factory.h
#pragma once
class Product;
class Factory
{
public:
virtual ~Factory()=0;
virtual Product* CreateProduct() = 0;
protected:
Factory();
private:
};
class BeverageFactory : public Factory
{
public:
BeverageFactory();
~BeverageFactory();
virtual Product* CreateProduct();
private:
};
class WineryFactory :public Factory
{
public:
WineryFactory();
~WineryFactory();
virtual Product* CreateProduct();
private:
};
//Product.h
#pragma once
class Product
{
public:
virtual ~Product() = 0;
protected:
Product();
private:
};
class BeverageProduct :public Product
{
public:
BeverageProduct();
~BeverageProduct();
private:
};
class WineryProduct :public Product
{
public:
WineryProduct ();
~WineryProduct ();
private:
};
//Factory.cpp
#include "stdafx.h"
#include "Factory.h"
#include "Product.h"
Factory::Factory()
{
}
Factory::~Factory()
{
}
Product* BeverageFactory::CreateProduct()
{
return new BeverageProduct();
}
BeverageFactory::BeverageFactory()
{
printf("建起了饮料厂\n");
}
BeverageFactory::~BeverageFactory()
{
}
Product* WineryFactory::CreateProduct()
{
return new WineryProduct();
}
WineryFactory::WineryFactory()
{
printf("建起了酒厂\n");
}
WineryFactory::~WineryFactory()
{
}
//Product.cpp
#include "stdafx.h"
#include "Product.h"
Product::Product()
{
}
Product::~Product()
{
}
BeverageProduct::BeverageProduct()
{
printf("生产出了饮料\n");
}
BeverageProduct::~BeverageProduct()
{
}
WineryProduct::WineryProduct()
{
printf("生产出了茅台酒\n");
}
WineryProduct ::~WineryProduct()
{
}
//main.cpp
#include "stdafx.h"
#include "Factory.h"
#include "Product.h"
int _tmain(int argc, _TCHAR* argv[])
{
Factory * fac1 = new BeverageFactory;
Factory * fac2 = new WineryFactory;
fac1->CreateProduct();
fac2->CreateProduct();
return 0;
}