#define APPLE 1
#define ORANGE 2
class XFruit
{
public :
virtual void ShowName() = 0;
} ;
//派生出子类商品
class Apple : public XFruit
{
public :
void ShowName (){ShowMessage("My name is apple"); }
};
class Orange : public XFruit
{
public :
void ShowName(){ShowMessage("My name is orange");}
} ;
//工厂类基类
class FruitShop
{
public:
XFruit* SaleFruit(int type)
{
if(type == APPLE)
{
return new Apple;
}
else if(type == ORANGE)
{
return new Orange;
}
else
{
return NULL;
}
}
} ;
void __fastcall TForm1::RzButton1Click(TObject *Sender)
{
FruitShop * fruitshop = new FruitShop();
fruitshop->SaleFruit(APPLE)->ShowName();
delete fruitshop;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RzButton2Click(TObject *Sender)
{
FruitShop * fruitshop = new FruitShop();
fruitshop->SaleFruit(ORANGE)->ShowName();
delete fruitshop;
}