抽象工厂模式 :对于产品族具有很好的扩展性
C++代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class AbstractApple {
public :
virtual void show() = 0;
};
class ChinaApple : public AbstractApple {
public :
void show() {
cout<<"中国的苹果"<<endl;
}
};
class USAApple : public AbstractApple {
public:
void show() {
cout << "美国的苹果" << endl;
}
};
class AbstractPeer {
public :
virtual void show() = 0;
};
class ChinaPeer : public AbstractPeer {
public:
void show() {
cout << "中国的鸭梨" << endl;
}
};
class USAPeer : public AbstractPeer {
public :
void show() {
cout<<"美国的鸭梨"<<endl;
}
};
class AbstractFactory {
public :
virtual AbstractApple* createApple() = 0;
virtual AbstractPeer* createPeer() = 0;
};
class ChinaFactor : public AbstractFactory {
public:
virtual AbstractApple* createApple() {
return new ChinaApple();
}
virtual AbstractPeer* createPeer() {
return new ChinaPeer();
}
};
void test() {
AbstractFactory* factory = new ChinaFactor();
AbstractApple* apple = factory->createApple();
apple->show();
}
int main() {
test();
return 0;
}