建造者模式案例

private String food;//食物
    private String drink;//饮料
    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;
    }

餐厅类

/**
 * @author megustas
 *抽象建造者类,确定套餐由两个产品buildFood()和buildDrink()组成,并声明一个得到产品建造后结果的方法getMeal()
 */
public abstract class MealBuilder {
    Meal meal=new Meal();
    public abstract void buildFood();
    public abstract void buildDrink();
    public Meal getMeal() {
        return meal;
    }

}

建造者类

//建造具体的套餐产品buildFood()和产品buildDrink()
public class MealA extends MealBuilder{

    @Override
    public void buildFood() {
        getMeal().setFood("一盒薯条");

    }

    @Override
    public void buildDrink() {
        getMeal().setDrink("一杯可乐");
    }

}

MealA

public class MealB extends MealBuilder{

    @Override
    public void buildFood() {
        getMeal().setFood("三个鸡翅");

    }

    @Override
    public void buildDrink() {
        getMeal().setDrink("一杯柠檬果汁");
    }

}

MealB

//指挥者类
public class KFCWaiter {

    private MealBuilder mealBuilder;
    //用来指挥建造过程
    public Meal construct(){
        mealBuilder.buildFood();//准备食物
        mealBuilder.buildDrink();//准备饮料
        return mealBuilder.getMeal();//准备完毕,返回一个完整的套餐给客户。
    }

    public MealBuilder getMealBuilder() {
        return mealBuilder;
    }

    public void setMealBuilder(MealBuilder mealBuilder) {
        this.mealBuilder = mealBuilder;
    }

}

指挥者类

/**
     * @param args
     * 客户端代码,客户不需知道具体的建造过程
     */
    public static void main(String[] args) {
        //服务员
        KFCWaiter waiter=new KFCWaiter();
        //套餐A
        MealA meala=new MealA();
        //服务员准备套餐A
        waiter.setMealBuilder(meala);
        //获取套餐
        Meal meal=waiter.construct();

        System.out.println("套餐A的组成部分:"+meal.getFood()+"---"+meal.getDrink());

    }

客户端

时间: 2024-10-11 13:32:52

建造者模式案例的相关文章

《大话设计模式》——读后感 (8)好菜每回味不同——建造者模式之基础案例(1)

建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式通常包括下面几个角色: 1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造.这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建. 2. ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建. 在建造过程完成后,提供产品的实例. 3. Director:调用具体建造者来创建复杂对象的各个部分,在指导者

设计模式【建造者模式】

概述: 将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. [拓展] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者,最后得到产品.即建造模式可以强制实行一种分步骤进行的建造过程. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 适用性: 1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时: 2. 当构建过程必须允许被构建的对象有不同的表示时. 参与者: 1

建造者模式(11)

今天,我们来讲一下建造者模式. 一.案例 我们来用winform画一个小人,一个头,一个身体,两只手,两条腿. 我们一般想到的代码如下: 1 /// <summary> 2 /// 画小人 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void pictu

设计模式(三)建造者模式(创建型)

定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 使用场景: 创建的产品有复杂的内部结构,且创建的产品有较多的共同点,其组成部分相似.隔离复杂对象的创建,使得相同的过程可以创建不同的产品. 与抽象工厂的区别: 在建造者模式里,有个指导者,由指导者来管理创造者,用户是与指导者联系的,指导者联系创建者得到最后的产品. 角色: Builder:一个抽象接口,用于规范定义复杂对象的组成部分. ConcreteBuilder:实现Builder接口,具体化复杂对象的各个部

设计模式(五)Builder Pattern建造者模式

在我们日常生活中,如构建一个飞船,一个手机,一栋建筑,都会有非常复杂的组装,这时候应该用到建造者模式 以建造一个飞船为例 案例:造小页飞船 1.飞船各部分元件 package com.littlepage.BuilderPattern; public interface AirShipBuilder { Engine builderEngine(); OrbitalModule builderOrbitalModule(); Escape builderEscape(); } 2.飞船实体用来组

设计模式--装饰者模式和建造者模式

1. 装饰者模式 动态地给一个对象添加一些额外的职责.就增加功能来说, Decorator模式相比生成子类更为灵活,而且能解决继承子类爆炸问题. 参与者 1.Component(被装饰对象的基类) 定义一个对象接口,可以给这些对象动态地添加职责. 2.ConcreteComponent(具体被装饰对象) 定义一个对象,可以给这个对象添加一些职责. 3.Decorator(装饰者抽象类) 维持一个指向Component实例的引用,并定义一个与Component接口一致的接口. 4.Concrete

7创建型模式之建造者模式

概念 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种.Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象. 对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法 角色和职责 1)

创建模式 -- 建造者模式

一.小案例分析 1.功能需求: 现需要建房子,建房流程:挖地基.砌墙.封顶.对于不同种类的房子(高楼,别墅),流程虽然一样,但是具体功能实现不同.如何实现建房子? 2.小菜鸡的答案: (1)定义一个抽象接口,并定义三个抽象方法(挖地基.砌墙.封顶).(2)对于不同种类的房子,实现该接口,并重写相关方法即可.(3)代码实现: package builder.pattern; /** * 测试类 * */ public class BuilderDemo { public static void m

设计模式——创建型模式之建造者模式

建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.一个 Builder 类会一步一步构造最终的对象.该 Builder 类是独立于其他对象的. 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定 应用实例: 1