未分类题
某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员(Waiter)调度厨师制作套餐。现采用生成器(Builder)模式实现制作过程,得到如图5-1所示的类图。

图5-1类图
【C++代码】
#include<iostream>
#include<string>
using namespace std;
class Pizza{
private:string parts;
public:
void setParts(string parts){this->parts=parts;}
string getParts( ){return parts;}
};
class PizzaBuilder{
protected:Pizza*pizza;
public:
Pizza*getPizza( ){retum pizza;}
void createNewPizza( ){pizza=new Pizza( );}
(1);
}
class HawaiianPizzaBuilder:public PizzaBuilder{
public:
void buildParts( ){pizza->setParts("cross+mild+ham&pineapple");}
};
class SpicyPizzaBuider:public PizzaBuilder{
public:
void buildParts( ){pizza->setParts("pan baked+hot+ham&pineapple");}
}
Class Waiter{
Private:
PizzaBuilder*pizzaBuilder;
public:
void setPizzaBuilder(PizzaBuilder*pizzaBuilder){/*设置构建器*/
(2)
}
Pizza*getPizza( ){return pizzaBuilder->getPizza( );}
void construct( ){/*构建*/
pizzaBuilder->createNewPizza( );
(3)
}
};
int main( ){
Waiter*waiter=new Waiter( );
PizzaBuilder*hawaiian pizzabuilder=new HawaiianPizzaBuilder( )
(4);
(5);
cout<<"pizza:"<<waiter->getPizza( )->getParts( )<<endl;
}
程序的输出结果为:
pizza:cross+mild+ham&pineapple
【参考答案】
(1)virtual void buildParts()=0
(2)this->pizzaBuilder=piz......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)