#include <iostream>
using namespace std;
class Fruit
{
public:
virtual void sayname() = 0;
};
class Banana : public Fruit
{
public:
virtual void sayname(){
cout << "i'm Banana!" << endl;
}
};
class Apple : public Fruit
{
public:
virtual void sayname(){
cout << "i'm Apple!" << endl;
}
};
class AbFactory
{
public:
virtual Fruit * GetFruit() = 0;
};
class BananaFactory : public AbFactory
{
public:
virtual Fruit * GetFruit(){
return new Banana;
}
};
class AppleFactory : public AbFactory
{
public:
virtual Fruit * GetFruit(){
return new Apple;
}
};
int main()
{
AbFactory * abfactory = new BananaFactory;
Fruit * fruit = NULL;
fruit = abfactory->GetFruit();
fruit->sayname();
delete abfactory;
delete fruit;
abfactory = new AppleFactory;
fruit = abfactory->GetFruit();
fruit->sayname();
delete abfactory;
delete fruit;
return 0;
}
输出结果
i
i