1、抽象类Product定义
#ifndef PRODUCT_H
#define PRODUCT_H
class Product
{
public:
virtual void doSomething() = 0;
};
#endif
2、具体实现类ConcreteProduct1定义
#ifndef CONCRETEPRODUCT1_H
#define CONCRETEPRODUCT1_H
#include "Product.h"
class ConcreteProduct1 : public Product
{
public:
void doSomething();
};
#endif
3、具体实现类ConcreteProduct1实现
#include <stdio.h>
#include "ConcreteProduct1.h"
void ConcreteProduct1::doSomething()
{
printf("ConcreteProduct1::doSomething()/n");
}
4、具体实现类ConcreteProduct0定义
#ifndef CONCRETEPRODUCT0_H
#define CONCRETEPRODUCT0_H
#include "Product.h"
class ConcreteProduct0 : public Product
{
public:
void doSomething();
};
#endif
5、具体实现类ConcreteProduct0实现
#include <stdio.h>
#include "ConcreteProduct0.h"
void ConcreteProduct0::doSomething()
{
printf("ConcreteProduct0::doSomething()/n");
}
6、产品创建类Creator定义
#ifndef CREATOR_H
#define CREATOR_H
#include "Product.h"
class Creator
{
public:
Product* createProduct(char* pstr);
};
#endif
7、产品创建类Creator实现
#include <string.h>
#include "Creator.h"
#include "ConcreteProduct0.h"
#include "ConcreteProduct1.h"
Product* Creator::createProduct(char* pstr)
{
if(strcmp("product0",pstr) == 0)
{
return new ConcreteProduct0();
} else if(strcmp("product1",pstr) == 0)
{
return new ConcreteProduct1();
} else
{
return new ConcreteProduct0();
}
}
8、客户使用类Client
#include "Creator.h"
#include "Product.h"
int main()
{
Creator* cr = new Creator();
Product* p = cr->createProduct("product0");
p->doSomething();
delete p;
p = cr->createProduct("product1");
p->doSomething();
delete p;
p = cr->createProduct("PP");
p->doSomething();
delete p;
delete cr;
return 0;
}