小胖子的Java设计模式-建造者模式

建造者模式(Builder Pattern)

背景介绍:

小胖子决定推出一款全新的超级披萨,这款披萨拥有多种配料和特殊制作要求。为了方便灵活地构建这款披萨,小胖子决定引入建造者模式。

设计模式应用:
建造者模式

为了构建具有多种配料和特殊制作要求的超级披萨,小胖子引入了建造者模式。他创建了一个披萨建造者接口,定义了披萨的各个组成部分的构建方法。然后,通过具体的披萨建造者类,可以根据需要组合不同的配料和制作要求,构建出不同种类的超级披萨。

代码示例:
// 披萨产品类
class Pizza {
    private String dough;
    private String sauce;
    private String topping;

    public void setDough(String dough) {
        this.dough = dough;
    }

    public void setSauce(String sauce) {
        this.sauce = sauce;
    }

    public void setTopping(String topping) {
        this.topping = topping;
    }

    @Override
    public String toString() {
        return "Pizza{" +
                "dough='" + dough + '\'' +
                ", sauce='" + sauce + '\'' +
                ", topping='" + topping + '\'' +
                '}';
    }
}

// 披萨建造者接口
interface PizzaBuilder {
    void buildDough();

    void buildSauce();

    void buildTopping();

    Pizza getPizza();
}

// 具体披萨建造者类 - 素食披萨
class VeggiePizzaBuilder implements PizzaBuilder {
    private Pizza pizza;

    public VeggiePizzaBuilder() {
        pizza = new Pizza();
    }

    @Override
    public void buildDough() {
        pizza.setDough("素食面团");
    }

    @Override
    public void buildSauce() {
        pizza.setSauce("番茄酱");
    }

    @Override
    public void buildTopping() {
        pizza.setTopping("蔬菜丁");
    }

    @Override
    public Pizza getPizza() {
        return pizza;
    }
}

// 具体披萨建造者类 - 海鲜披萨
class SeafoodPizzaBuilder implements PizzaBuilder {
    private Pizza pizza;

    public SeafoodPizzaBuilder() {
        pizza = new Pizza();
    }

    @Override
    public void buildDough() {
        pizza.setDough("薄皮");
    }

    @Override
    public void buildSauce() {
        pizza.setSauce("白酱");
    }

    @Override
    public void buildTopping() {
        pizza.setTopping("海鲜组合");
    }

    @Override
    public Pizza getPizza() {
        return pizza;
    }
}

// 披萨导演类
class PizzaDirector {
    public Pizza constructPizza(PizzaBuilder pizzaBuilder) {
        pizzaBuilder.buildDough();
        pizzaBuilder.buildSauce();
        pizzaBuilder.buildTopping();
        return pizzaBuilder.getPizza();
    }
}

// 客户端
public class BuilderPatternExample {
    public static void main(String[] args) {
        PizzaDirector pizzaDirector = new PizzaDirector();

        // 构建素食披萨
        PizzaBuilder veggiePizzaBuilder = new VeggiePizzaBuilder();
        Pizza veggiePizza = pizzaDirector.constructPizza(veggiePizzaBuilder);
        System.out.println("素食披萨:" + veggiePizza);

        // 构建海鲜披萨
        PizzaBuilder seafoodPizzaBuilder = new SeafoodPizzaBuilder();
        Pizza seafoodPizza = pizzaDirector.constructPizza(seafoodPizzaBuilder);
        System.out.println("海鲜披萨:" + seafoodPizza);
    }
}
灵活构建超级披萨

在这个例子中,建造者模式允许小胖子根据需要构建不同种类的超级披萨。通过定义披萨建造者接口和具体的披萨建造者类,可以动态地组合不同的配料和制作要求,创建出符合需求的超级披萨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值