cpp的工厂模式
//
// main.cpp
// factoryPartner
//
// Created by bikang on 16/11/18.
// Copyright (c) 2016年 bikang. All rights reserved.
//
#include <iostream>
using namespace std;
class Produce{
public:
virtual ~Produce(){}
virtual void produceIt()=0;
};
class XmlProduce:public Produce{
public:
~XmlProduce(){}
void produceIt(){
cout << "XmlProduce" << endl;
}
};
class JsonProduce:public Produce{
public:
~JsonProduce(){}
void produceIt(){
cout << "JsonProduce" << endl;
}
};
enum TYPELIST{TYPE_XML,TYPE_JSON};
class Factory{
public:
virtual Produce* createProduce(TYPELIST type)=0;
virtual ~Factory(){}
protected:
Factory(){}
};
class ToolFactory:public Factory{
public:
ToolFactory(){}
Produce* createProduce(TYPELIST type){
switch (type) {
case TYPE_XML:
return new XmlProduce();
break;
default:
return new JsonProduce();
break;
}
}
~ToolFactory(){}
};
int main(int argc, const char * argv[]) {
Factory *tf = new ToolFactory();
Produce *p = tf->createProduce(TYPE_XML);
p->produceIt();
p = tf->createProduce(TYPE_JSON);
p->produceIt();
delete tf;
delete p;
std::cout << "Hello, World!\n";
return 0;
}