1、
#include
2、c: CHongshaorouLucai() { cout << " 制作鲁菜红烧肉 ." << endl; } virtual ~CHongshaorouLucai() {}; virtual void Start() { cout << " 鲁菜红烧肉好了 ." << endl; }; }; // 粤菜红烧肉 class CHongshaorouYuecai : public CHongshaorou { public:
3、CHongshaorouYuecai() { cout << " 制作粤菜红烧肉 ." << endl; } virtual ~CHongshaorouYuecai() {}; virtual void Start() { cout << " 粤菜红烧肉好了 ." << endl; }; }; // 清蒸鱼 class Cqingzhengyu { public: virtual ~Cqingzhengyu() {}; //
4、 产品使用公共接口 virtual void Start() = 0;// 抽象基类,纯虚函数由派生类去实现 }; // 鲁菜清蒸鱼 class CqingzhengyuLucai : public Cqingzhengyu { public: CqingzhengyuLucai() { cout << " 制作鲁菜清蒸鱼 ." << endl; } virtual ~CqingzhengyuLucai() {}; virtual void Start()
5、 { cout << " 鲁菜清蒸鱼好了 ." << endl; }; }; // 粤菜清蒸鱼 class CqingzhengyuYuecai : public Cqingzhengyu { public: CqingzhengyuYuecai() { cout << " 制作粤菜清蒸鱼 ." << endl; } virtual ~CqingzhengyuYuecai() {}; virtual void Start() {
6、 cout << " 粤菜清蒸鱼好了 ." << endl; }; }; // 抽象工厂 class CFactory { public: virtual ~CFactory(){}; virtual CHongshaorou* CreateHongshaorou() = 0; virtual Cqingzhengyu* Createqingzhengyu() = 0; }; // 鲁菜工厂 class CLucaiFactory : public CFactory {
7、public: CLucaiFactory() { cout << " 制作鲁菜工厂 ." << endl; } virtual ~CLucaiFactory(){}; virtual CHongshaorou* CreateHongshaorou() { return new CHongshaorouLucai; }; virtual Cqingzhengyu* Createqingzhengyu() { return n
8、ew CqingzhengyuLucai; }; }; // 粤菜工厂 class CYuecaiFactory : public CFactory { public: CYuecaiFactory() { cout << " 制作粤菜工厂 ." << endl; } virtual ~CYuecaiFactory(){}; virtual CHongshaorou* CreateHongshaorou() { return new CHo
9、ngshaorouYuecai; }; virtual Cqingzhengyu* Createqingzhengyu() { return new CqingzhengyuYuecai; }; }; void Test(CFactory* pFactory) { CHongshaorou* pHongshaorou = NULL; Cqingzhengyu* pqingzhengyu = NULL; pHongshaorou = pFactory->CreateHongshao
10、rou();//
制作红烧肉
pqingzhengyu = pFactory->Createqingzhengyu();//
制作清蒸鱼
pHongshaorou->Start();
pqingzhengyu->Start();
delete pqingzhengyu;
delete pHongshaorou;
};
int main()
{
CFactory* pFactory = NULL;//
抽象工厂
//
鲁菜工厂。做红烧肉,清蒸鱼
pFactory = new CLucaiFactory;//
制作鲁菜工厂
Test(pFactory);
delete pFactory;
cout<






