class AbstractFactory
{
public:
virtual Fruit* CreateFruit(char *s) = 0;
};
class NorthFactory:public AbstractFactory
{
public:
virtual Fruit *CreateFruit(char * s)
{
if(strcmp(s,"apple") == 0)
{
return new NorthApple;
}
if(strcmp(s,"banana") == 0)
{
return new NorthBanana;
}
}
};
class SouthFactory:public AbstractFactory
{
public:
virtual Fruit *CreateFruit(char * s)
{
if(strcmp(s,"apple") == 0)
{
return new SouthApple;
}
if(strcmp(s,"banana") == 0)
{
return new SouthBanana;
}
}
};
int main()
{
AbstractFactory *fac_north = NULL;
AbstractFactory *fac_south = NULL;
fac_north = new NorthFactory;
fac_south = new SouthFactory;
Fruit *fruit_south_apple = NULL;
Fruit *fruit_south_banana = NULL;
Fruit *fruit_north_apple = NULL;
Fruit *fruit_north_banana = NULL;
fruit_north_apple = fac_north->CreateFruit("apple");
fruit_north_banana = fac_north->CreateFruit("banana");
fruit_south_apple = fac_south->CreateFruit("apple");
fruit_south_banana = fac_south->CreateFruit("banana");
fruit_north_apple->sayname();
fruit_north_banana->sayname();
fruit_south_apple->sayname();
fruit_south_banana->sayname();
delete fruit_south_apple;
delete fruit_south_banana;
delete fruit_north_apple;
delete fruit_north_banana;
delete fac_north;
fac_north = NULL;
delete fac_south;
fac_south = NULL;
return 0;
}
设计模式之-----抽象工厂
最新推荐文章于 2024-03-28 14:54:56 发布