/* 顾客想吃汉堡和鸡腿有肯德基和麦当劳提供由顾客选择 (抽象工厂设计模式练习) */
/* 作者: */
/* 时间:20130116 */
/* */
/************************************************************************/
#ifndef _RESTAURANT_H_
#define _RESTAURANT_H_
#include <stdio.h>
class Restaurant
{
public:
virtual void Makechiken()=0;
virtual void Makehanbao()=0;
};
class Mcd:public Restaurant
{
virtual void Makechiken(){printf("麦当劳为您提供鸡\n");}
virtual void Makehanbao(){printf("麦当劳为您提供汉堡\n");}
};
class Kfc:public Restaurant
{
virtual void Makechiken(){printf("肯德基为您提供鸡\n");}
virtual void Makehanbao(){printf("肯德基为您提供汉堡\n");}
};
//工厂方法
class Customer
{
public:
virtual Restaurant* Choice() =0;
};
class ChoMcd:public Customer
{
virtual Restaurant* Choice()
{
return new Mcd();
}
};
class ChoKfc:public Customer
{
virtual Restaurant* Choice()
{
return new Kfc();
}
};
#endif
=============================================================cpp==========
#include "stdafx.h"
#include "Restaurant.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
Customer *I = NULL;
Restaurant *dining= NULL;
int chioce=0;
cout<<"请选择餐厅"<<endl;
while(1)
{
static int nUm=0;
cin>>chioce;
switch (chioce)
{
case 1:
I=new ChoMcd();
nUm++;
break;
case 2:
I=new ChoKfc();
nUm++;
break;
default :
cout<<"你没想好吃什么吗?请重新选择1或者2"<<endl;
break;
}
if(nUm>0)break;
}
dining=I->Choice();
dining->Makechiken();
dining->Makehanbao();
return 0;
}
本文通过一个简单的场景——顾客在麦当劳与肯德基间的选择来演示抽象工厂设计模式的应用。介绍了如何通过抽象工厂模式实现汉堡和鸡腿的制作过程,并通过顾客的选择实例化不同的餐厅对象。

被折叠的 条评论
为什么被折叠?



