#include<iostream>
#include<string>
using namespace std;
class AbstractFruit {
public:
virtual void showname() = 0;
};
class Apple :public AbstractFruit {
public:
void showname() {
cout << "我是苹果" << endl;
}
};
class Banner :public AbstractFruit {
public:
void showname() {
cout << "我是香蕉" << endl;
}
};
class Pear :public AbstractFruit {
public:
void showname() {
cout << "我是梨" << endl;
}
};
class Feactory {
public:
static AbstractFruit* CreateFruit(string flag) {
if (flag == "apple") {
return new Apple;
}
else if (flag == "pear") {
return new Pear;
}
else if (flag == "banana") {
return new Banner;
}
else {
return nullptr;
}
}
};
void test1() {
Feactory* factory = new Feactory;
AbstractFruit* fruit = factory->CreateFruit("apple");
fruit->showname();
delete fruit;
delete factory;
}
int main(){
test1();
cin.get();
}