//1.一个基类 AbstractFruit
class AbstractFruit
{
public:
virtual void showName()=0;
};
//2.3个水果类,派生类Apple ,pear,banana
class Apple:public AbstractFruit
{
public:
virtual void showName()
{cout<<"我是苹果"<<endl;}
};
class pear:public AbstractFruit
{
public:
virtual void showName()
{cout<<"我是梨子"<<endl;}
};
class banana:public AbstractFruit
{
public:
virtual void showName()
{cout<<"我是香蕉"<<endl;}
};
//3.一个工厂类
class FruitFactory{
public:
static AbstractFruit* CreateFruit(string flag){
if(flag=="apple"){
return new Apple;
}
else if(flag=="banana")
{
return new Banana;
}
else if(flag=="pear")
{
return new Pear;
}
else{
return NULL;
}
}
};
//4.调用
void test01(){
FruitFactory *factory=new FruitFactory;
AbstractFruit *fruit=factory->CreateFruit("apple");
fruit->ShowName();
delete fruit;
fruit=factory->CreateFruit("pear");
fruit->ShowName();
delete fruit;
fruit=factory->CreateFruit("banana");
fruit->ShowName();
delete fruit;
delete factory;
}
int main(void)
{
test01();
return 0;
}