Code
#include <stdio.h>
class CFruit
{
public:
virtual void What() = 0;
};
class CApple : public CFruit
{
public:
virtual void What()
{
printf("Apple\n");
}
};
class CPear : public CFruit
{
public:
virtual void What()
{
printf("Pear\n");
}
};
class CBanana : public CFruit
{
public:
virtual void What()
{
printf("Banana\n");
}
};
enum eFruitType{APPLE=1, PEAR, BANANA};
class CFruitFactory
{
public:
CFruit *GetFruitInstance(eFruitType type)
{
printf("FruitFactory\n");
switch(type)
{
case APPLE:
return new CApple();
case PEAR:
return new CPear();
case BANANA:
return new CBanana();
default:
return NULL;
}
}
};
int main()
{
CFruitFactory factory;
CFruit *fruit;
printf("What kind of fruit are you want to eat?\n");
printf("1-Apple, 2 -Pear, 3 -Banana\n");
int nType = 0;
scanf("%d", &nType);
fruit = factory.GetFruitInstance(eFruitType(nType));
if(fruit == NULL)
{
printf("The factor didn't has this fruit ");
return 0;
}
fruit->What();
return 0;
}
#include <stdio.h>
class CFruit
{
public:
virtual void What() = 0;
};
class CApple : public CFruit
{
public:
virtual void What()
{
printf("Apple\n");
}
};
class CPear : public CFruit
{
public:
virtual void What()
{
printf("Pear\n");
}
};
class CBanana : public CFruit
{
public:
virtual void What()
{
printf("Banana\n");
}
};
enum eFruitType{APPLE=1, PEAR, BANANA};
class CFruitFactory
{
public:
CFruit *GetFruitInstance(eFruitType type)
{
printf("FruitFactory\n");
switch(type)
{
case APPLE:
return new CApple();
case PEAR:
return new CPear();
case BANANA:
return new CBanana();
default:
return NULL;
}
}
};
int main()
{
CFruitFactory factory;
CFruit *fruit;
printf("What kind of fruit are you want to eat?\n");
printf("1-Apple, 2 -Pear, 3 -Banana\n");
int nType = 0;
scanf("%d", &nType);
fruit = factory.GetFruitInstance(eFruitType(nType));
if(fruit == NULL)
{
printf("The factor didn't has this fruit ");
return 0;
}
fruit->What();
return 0;
}