设计模式-建造者模式的应用
发布日期:2021-06-30 17:44:39 浏览次数:2 分类:技术文章

本文共 2614 字,大约阅读时间需要 8 分钟。

建造者模式的应用

实例:KFC套餐

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

【模式UML图】

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

package sdp.sy_3.builderpattern;//产品类:套餐――包括主食和饮料public class SetMeal {
String StapleFood; //主食 String Dringks; //饮料 public String getStapleFood() {
return StapleFood; } public void setStapleFood(String stapleFood) {
StapleFood = stapleFood; } public String getDringks() {
return Dringks; } public void setDringks(String dringks) {
Dringks = dringks; } }

// SetMealBuilder.java:

package sdp.sy_3.builderpattern;//抽象的Builder接口public abstract class SetMealBuilder {
SetMeal setMeal = new SetMeal(); public abstract void createStapleFood(); public abstract void createDrinks(); public SetMeal getSetMeal() {
return setMeal; } }

// SetMealBuilderA.java:

package sdp.sy_3.builderpattern;//套餐A:主食:汉堡+饮料:果汁public class SetMealBuilderA extends SetMealBuilder{
@Override public void createStapleFood() {
setMeal.setStapleFood("Hamburger"); } @Override public void createDrinks() {
setMeal.setDringks("juice"); } }

// SetMealBuilderB.java:

package sdp.sy_3.builderpattern;//套餐B:主食:鸡肉卷+饮料:可乐public class SetMealBuilderB extends SetMealBuilder{
@Override public void createStapleFood() {
setMeal.setStapleFood("ChickenRolls"); } @Override public void createDrinks() {
setMeal.setDringks("Cola"); }}

// Director.java:

package sdp.sy_3.builderpattern;public class Director {
private SetMealBuilder setMealBuilder; public Director(SetMealBuilder setMealBuilder) {
this.setMealBuilder = setMealBuilder; } public SetMeal construct() {
//准备主食 setMealBuilder.createStapleFood(); //准备饮料 setMealBuilder.createDrinks(); //返回一个套餐 return setMealBuilder.getSetMeal(); }}

// Client.java:

package sdp.sy_3.builderpattern;//建造者模式public class Client {
public static void main(String[] args) {
System.out.println("---------KFC套餐选择---------"); //建造套餐A SetMealBuilder setMealABuilder = new SetMealBuilderA(); Director kfcDirector = new Director(setMealABuilder); SetMeal kfcSetMealA = kfcDirector.construct(); System.out.println("套餐A:"); System.out.println("主食:"+kfcSetMealA.getStapleFood()+" 饮料:"+kfcSetMealA.getDringks()); //建造套餐B SetMealBuilder setMealBBuilder = new SetMealBuilderB(); kfcDirector = new Director(setMealBBuilder); SetMeal kfcSetMealB = kfcDirector.construct(); System.out.println("套餐B:"); System.out.println("主食:"+kfcSetMealB.getStapleFood()+" 饮料:"+kfcSetMealB.getDringks()); }}

【运行截图】

运行结果

转载地址:https://lexiaoyuan.blog.csdn.net/article/details/89074024 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:设计模式-单例模式的应用
下一篇:设计模式-抽象工厂模式的应用

发表评论

最新留言

很好
[***.229.124.182]2024年04月12日 17时30分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章