#ifndef ABSTRACTFACTORY_H
#define ABSTRACTFACTORY_H
class ProductA;
class ProductB;
class AbstractFactory
{
public:
AbstractFactory();
~AbstractFactory();
ProductA* CreateProductA();
ProductB* CreateProductB();
};
#endif // ABSTRACTFACTORY_H
#include "abstractfactory.h"
#include "product.h"
AbstractFactory::AbstractFactory()
{
}
AbstractFactory::~AbstractFactory()
{
}
ProductA* AbstractFactory::CreateProductA()
{
return new ProductA();
}
ProductB* AbstractFactory::CreateProductB()
{
return new ProductB();
}
#ifndef PRODUCT_H
#define PRODUCT_H
class ProductA
{
public:
ProductA();
~ProductA();
};
class ProductB
{
public:
ProductB();
~ProductB();
};
#endif // PRODUCT_H
#include "product.h"
#include <iostream>
ProductA::ProductA()
{
std::cout<<"ProductA" << std::endl;
}
ProductA::~ProductA()
{}
ProductB::ProductB()
{
std::cout<<"ProductB" <<std::endl;
}
ProductB::~ProductB()
{
}
#include <iostream>
using namespace std;
#include "abstractfactory.h"
int main()
{
AbstractFactory* factory = new AbstractFactory();
ProductA* pa = factory->CreateProductA();
ProductB* pb = factory->CreateProductB();
delete pa;
delete pb;
return 0;
}