建造者模式的应用
Posted majiasheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建造者模式的应用相关的知识,希望对你有一定的参考价值。
一、实验目的:
1) 掌握建造者模式(Builder)的特点
2) 分析具体问题,使用建造者模式进行设计。
二、实验环境:
Eclipse
三、实验内容:
(写出主要的内容)
实例:KFC套餐
建造者模式可以用于描述KFC如何创建套餐:套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。利用建造者模式设计,用JAVA语言实现 (或C#控制台应用程序实现)。绘制该模式的UML图。
【模式UML图】
(1) Meal(套餐类)
public class Meal {
private String pasta;
private String drink;
private String dishes;
public void setPasta(String pasta){
this.pasta = pasta;
}
public void setDrink(String drink){
this.drink = drink;
}
public void setDishes(String dishes){
this.dishes = dishes;
}
public String getPasta(){
return(this.pasta);
}
public String getDrink(){
return(this.drink);
}
public String getDishes(){
return(this.dishes);
}
}
(2)抽象建造者类MealBuilder(套餐建造者类)
public abstract class MealBuilder {
Meal meal=new Meal();
public abstract void buildPasta();
public abstract void buildDrink();
public abstract void buildDishes();
public Meal getMeal() { //这道一个菜单,这个是返回
return meal ;
}
}
(3)具体建造者类SubMealBuilderA()(A套餐建造者类)
public class SubMealBuilderA extends MealBuilder {
public void buildPasta()
{
meal.setPasta("一份面条");
}
public void buildDrink()
{
meal.setDrink("一瓶橙汁");
}
public void buildDishes()
{
meal.setDishes("一份番茄炒鸡蛋");
}
}
(4) 具体建造者类SubMealBuilderB()(B套餐建造者类)
public class SubMealBuilderB extends MealBuilder {
public void buildPasta()
{
meal.setPasta("一份米饭");
}
public void buildDrink()
{
meal.setDrink("一瓶雪碧");
}
public void buildDishes()
{
meal.setDishes("一份芹菜炒肉");
}
(5)指挥者类Waiter(服务员类)
public class Waiter {
private MealBuilder mb;
public void setMealBuilder(MealBuilder mb)//调用这是从那里调用而来,当然是等待服务了
{
this.mb = mb;
}
public Meal construct()
{
mb.buildPasta();
mb.buildDrink();
mb.buildDishes();
return mb.getMeal();
}
}
(6)客户端测试类Client
public class Waiter {
private MealBuilder mb;
public void setMealBuilder(MealBuilder mb)//调用这是从那里调用而来,当然是等待服务了
{
this.mb = mb;
}
public Meal construct()
{
mb.buildPasta();
mb.buildDrink();
mb.buildDishes();
return mb.getMeal();
}
}
【模式代码(JAVA语言实现)】
【运行截图】
具体建造者类SubMealBuilderA()(A套餐建造者类)
具体建造者类SubMealBuilderB()(B套餐建造者类)
四、心得体会:
通过这次实验,让我学会掌握建造者模式(Builder)的特点,分析具体问题,使用建造者模式进行设计。也称生成器模式,生成器模式将所建造的产品(通常是一个复合体)最后一次性返回。
以上是关于建造者模式的应用的主要内容,如果未能解决你的问题,请参考以下文章