实验三 建造者模式的应用
作者:互联网
一、实验目的:
- 掌握建造者模式(Builder)的特点
- 分析具体问题,使用建造者模式进行设计
二、实验环境:
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();
}
}
【运行截图】
四、心得体会:
【实验小结】
通过本次实验,学会了使用建造者模式。建造者模式的适用性如下:
首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。
其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。
标签:Meal,建造,模式,public,实验,套餐,meal 来源: https://blog.csdn.net/qq_44364267/article/details/118032091