<span style="font-family: Arial, Helvetica, sans-serif;">#include<memory></span>
#include<iostream>
#include<string>
#include<cctype>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
enum Ctype {coreA,coreB};
class SingleCore{
public:
virtual void print(){
cout << "siglecore_print"<<endl;
}
~SingleCore(){
cout <<"~~singlecore"<<endl;
}
};
class SingleCoreA :public SingleCore{
public:
void print(){
cout << "A_print"<<endl;
}
~SingleCoreA(){
cout <<"~~singlecoreA"<<endl;
}
};
class SingleCoreB :public SingleCore{
public:
void print(){
cout << "B_print"<<endl;
}
~SingleCoreB(){
cout <<"~~singlecoreB"<<endl;
}
};
class Factory{
public:
SingleCore* creatCore(enum Ctype ctype){
switch (ctype) {
case coreA:
return new SingleCoreA;
break;
case coreB:
return new SingleCoreB;
break;
default:
return NULL;
break;
}
}
};
int main(int argc, char *argv[])
{
auto_ptr<Factory> fac (new Factory() );
auto_ptr<SingleCore> singcore (fac->creatCore (coreA) );
singcore->print ();
return 0;
}
简单工厂的缺点:修改类型,要修改工厂类,违反软件实体可扩展,不能修改的原则
简单工厂适用于:1,要new很多的时候,2,不需要关心创建的过程,只需要管操作的时候