23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
class Fruit {
public:
virtual void sayName() = 0;
};
class SouthBanana :public Fruit {
public:
void sayName() {
cout << "I am south banana" << endl;
}
};
class NorthBanana :public Fruit {
public:
void sayName() {
cout << "I am north banana" << endl;
}
};
class SouthApple :public Fruit {
public:
void sayName() {
cout << "I am south apple" << endl;
}
};
class NorthApple :public Fruit {
public:
void sayName() {
cout << "I am north apple" << endl;
}
};
class AbstractFactory {
public:
virtual Fruit *createBanana() = 0;
virtual Fruit *createApple() = 0;
};
class SouthFactory :public AbstractFactory {
public:
Fruit *createBanana() {
return new SouthBanana;
}
Fruit *createApple() {
return new SouthApple;
}
};
class NorthFactory :public AbstractFactory {
public:
Fruit *createBanana() {
return new NorthBanana;
}
Fruit *createApple() {
return new NorthApple;
}
};
void main() {
AbstractFactory *f = NULL;
Fruit *fruit = NULL;
f = new SouthFactory;
fruit = f->createBanana();
fruit->sayName();
delete fruit;
fruit = f->createApple();
fruit->sayName();
delete fruit;
delete f;
f = new NorthFactory;
fruit = f->createBanana();
fruit->sayName();
delete fruit;
fruit = f->createApple();
fruit->sayName();
delete fruit;
delete f;
}