头文件:
Factory.h
#ifndef FACTORY_H
#define FACTORY_H
#include "product.h"
class Factory
{
public:
Factory();
Product *getProduct(enum Type type);
};
#endif // FACTORY_H
Product.h
#ifndef PRODUCT_H
#define PRODUCT_H
enum Type{PA,PB,PC,PD};
class Product
{
public:
Product();
virtual int Operation(int a,int b)=0;
};
class ProductA:public Product
{
public:
int Operation(int a, int b);
};
class ProductB:public Product
{
public:
int Operation(int a, int b);
};
class ProductC:public Product
{
public:
int Operation(int a, int b);
};
class ProductD:public Product
{
public:
int Operation(int a, int b);
};
#endif // PRODUCT_H
源文件:
Factory.c
#include "factory.h"
Factory::Factory()
{
}
Product *Factory::getProduct(Type type)
{
switch (type) {
case PA:
return new ProductA;
break;
case PB:
return new ProductB;
break;
case PC:
return new ProductC;
break;
case PD:
return new ProductD;
break;
default:
break;
}
}
Product.c
#include "product.h"
Product::Product()
{
}
int ProductA::Operation(int a, int b)
{
return a+b;
}
int ProductB::Operation(int a, int b)
{
return a-b;
}
int ProductC::Operation(int a, int b)
{
return a*b;
}
int ProductD::Operation(int a, int b)
{
return a/b;
}
mian.c
#include <iostream>
#include "factory.h"
using namespace std;
int main()
{
cout << "Hello World!" << endl;
Factory *f = new Factory;
cout << f->getProduct(PA)->Operation(30,20);
return 0;
}