软件设计体系结构-实验报告3

实验名称     建造者模式的应用                      日期 2019 03 26

一、实验目的:

1) 掌握建造者模式(Builder)的特点

2) 分析具体问题,使用建造者模式进行设计。

 

实例:KFC套餐

建造者模式可以用于描述KFC如何创建套餐:套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。利用建造者模式设计,用JAVA语言实现  (C#控制台应用程序实现)。绘制该模式的UML图。

     

 

 

二、实验环境:

 

 

 

三、实验内容:

模式UML

软件设计体系结构-实验报告3_第1张图片【模式代码(JAVA语言实现)】

package 软件设计体系结构;

public class KFCTest {
    public static void main(String[] args) {
        MealA A = new MealA();
        KFCWaiter kfcWaiter1 = new KFCWaiter(A);
        Meal mealA = kfcWaiter1.construct();
        System.out.println("套餐A");
        System.out.println("食物 " + mealA.getFood() + "  饮料 " + mealA.getDrink());

        MealB B = new MealB();
        KFCWaiter kfcWaiter2 = new KFCWaiter(B);
        Meal mealB = kfcWaiter2.construct();
        System.out.println("套餐B");
        System.out.println("食物 " + mealB.getFood() + "  饮料 " + mealB.getDrink());
    }
}
package 软件设计体系结构;

public class Meal {
    public String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }

    public String getDrink() {
        return drink;
    }

    public void setDrink(String drink) {
        this.drink = drink;
    }

    private String food;
    private String drink;

}
package 软件设计体系结构;

public class MealA extends MealBuilder {

    public void buildDrink(){
        meal.setDrink("可乐");
    }
    public void buildFood(){
        meal.setFood("薯条");
    }
}
package 软件设计体系结构;

public class MealB extends MealBuilder{

    public void buildDrink(){
        meal.setDrink("雷碧");
    }
    public void buildFood(){
        meal.setFood("汉堡");
    }
}
package 软件设计体系结构;

public class KFCWaiter {
    private MealBuilder mealBuilder;

    public KFCWaiter(MealBuilder mealBuilder){
        this.mealBuilder = mealBuilder;
    }

    public Meal construct(){
        mealBuilder.buildFood();

        mealBuilder.buildDrink();

        return mealBuilder.getMeal();
    }
}
package 软件设计体系结构;

public abstract class MealBuilder {

    Meal meal = new Meal();

    public abstract void buildFood();

    public abstract void buildDrink();

    public Meal getMeal(){
        return meal;
    }
}

【运行截图】

软件设计体系结构-实验报告3_第2张图片

 

 

 

四、心得体会:

通过本次实验,学会了使用建造者模式。建造者模式的适用性如下:

当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

当构造过程必须允许被构造的对象有不同表示时。

需要生成的对象具有复杂的内部结构。

需要生成的对象内部属性本身相互依赖。

 

 

 

 

 

 

 

你可能感兴趣的:(软件设计体系结构)