【分享】Java Builder 建造者模式之案例分享

介绍

建造者模式(Builder)核心目的是通过使用多个简单对象一步步构建出一个复杂对象。通过将复杂对象的构造过程拆分为多个简单的步骤,使得创建对象更加灵活,可读性和可维护性更强。


使用场景

  • 创建一个由多个部分组成的复杂对象,需要遵循特定顺序创建对象
  • 相同的构建过程可以创建不同的对象表现(类似构造器重载)
  • 不影响代码原来的功能情况下,方便扩展新的组成部分

建造者模式组成部分

  • 产品(Product):表示最终要构建的复杂对象
  • 建造者(Builder):定义用于构建产品的接口,包含创建产品各个部分的方法
  • 具体建造者(Concrete Builder):实现Builder接口,完成产品各个部分的具体构建工作。
  • 指挥者(Director):负责调用合适的建造者方法,按照特定顺序组装产品。

代码案例

在这个示例代码中,我们有一个Pizza类,它有4个属性:面团、酱料、奶酪和配料。我们使用内部类Builder来构建Pizza实例。

public class Pizza {
    private String dough;
    private String sauce;
    private String cheese;
    private List<String> toppings;

    private Pizza(Builder builder) {
        this.dough = builder.dough;
        this.sauce = builder.sauce;
        this.cheese = builder.cheese;
        this.toppings = builder.toppings;
    }

    public static class Builder {
        private String dough;
        private String sauce;
        private String cheese;
        private List<String> toppings = new ArrayList<String>();

        public Builder(String dough, String sauce) {
            this.dough = dough;
            this.sauce = sauce;
        }

        public Builder cheese(String cheese) {
            this.cheese = cheese;
            return this;
        }

        public Builder toppings(String... toppings) {
            this.toppings.addAll(Arrays.asList(toppings));
            return this;
        }

        public Pizza build() {
            return new Pizza(this);
        }
    }

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

Builder类中,我们有一个构造函数,它接受面团和酱料作为参数。我们还有两个方法cheesetoppings,用于设置cheesetoppings属性。

最后,我们有一个build方法,它返回一个新的Pizza实例。

使用建造者模式,我们可以这样构建一个Pizza实例:

Pizza pizza = new Pizza.Builder("Thin Crust", "Tomato Sauce")
                .cheese("Mozzarella")
                .toppings("Pepperoni", "Mushrooms", "Onions")
                .build();

System.out.println(pizza);

控制台输出:

Pizza{dough='Thin Crust', sauce='Tomato Sauce', cheese='Mozzarella', toppings=[Pepperoni, Mushrooms, Onions]}

小结

Builder模式是为了创建一个复杂的对象,需要多个步骤完成创建,或者需要多个零件组装的场景,且创建过程中可以灵活调用不同的步骤或组件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农阿福

看明白的同学,别忘请阿福喝奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值