实验三 建造者模式的应用

一、实验目的:

  1. 掌握建造者模式(Builder)的特点
  2. 分析具体问题,使用建造者模式进行设计

二、实验环境:

Idea

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

【模式代码(JAVA语言实现)】

import lombok.Data;
import lombok.ToString;

import java.util.Scanner;

/**
 * ClassName Builder
 * Description
 *
 * @author 石都林
 * @date 2021/6/18 8:41
 * Version 1.0
 */
public class Builder {
    public static void main(String[] args) {
        MealDirector mealDirector = new MealDirector();
        Meal meal = mealDirector.constructPerson(new SetMealBuilder());
        System.out.println(meal.toString());
    }
}
/**
*套餐
*/
@Data
class Meal{
    //主食
    private String stapleFood;
    //drinks
    private String drinks;

    @Override
    public String toString() {
        return "Meal{" +
                "stapleFood='" + stapleFood + '\'' +
                ", drinks='" + drinks + '\'' +
                '}';
    }
}
interface MealBuilder {
    void buildStapleFood();
    void buildDrinks();;
    Meal buildMeal();//组装
}

 class SetMealBuilder implements MealBuilder {

    Meal meal;
    static Scanner input = new Scanner(System.in);
    public SetMealBuilder() {
        meal = new Meal();
    }

     @Override
     public void buildStapleFood() {
         System.out.println("构建主食如汉堡、鸡肉卷等)");
         meal.setStapleFood(input.next());
     }

     @Override
     public void buildDrinks() {
         System.out.println("构建饮料(如果汁、可乐等)");
        meal.setDrinks(input.next());
     }

     @Override
     public Meal buildMeal() {
         return meal;
     }
 }

 class MealDirector {
    public Meal constructPerson(MealBuilder mealBuilder) {
        //可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐
        mealBuilder.buildStapleFood();
        mealBuilder.buildDrinks();
        return mealBuilder.buildMeal();
    }
}

【运行截图】
在这里插入图片描述
四、心得体会:

【实验小结】
通过本次实验,学会了使用建造者模式。建造者模式的适用性如下:
首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。
其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值