建造者Builder

本文介绍了建造者模式的应用,通过一个汽车建造的例子展示了如何将复杂对象的构建过程分解为多个步骤,使得构建过程更加灵活。具体实现包括抽象建造者、具体建造者和指挥者角色,测试结果显示了建造者模式的构建流程。总结提到,建造者模式适用于构建复杂对象,但当产品内部变化时调整成本较高。
摘要由CSDN通过智能技术生成

概述

一个复杂对象的构建往往需要构建很多部件,建造者模式将这些部件的构建抽取出来,当所有部件都构建完毕后才完成这个复杂对象的构建

场景

复杂产品按部件构建

实现

产品

/**
 * 被构建的产品
 */
public class Car {
    private String wheel;
    private String body;
    private String engine;

    public void setWheel(String wheel) {
        this.wheel = wheel;
    }
    public void setBody(String body) {
        this.body = body;
    }
    public void setEngine(String engine) {
        this.engine = engine;
    }
    @Override
    public String toString() {
        return "Car{" +
                "wheel='" + wheel + '\'' +
                ", body='" + body + '\'' +
                ", engine='" + engine + '\'' +
                '}';
    }
}

抽象建造者

/**
 * 抽象建造者
 */
public abstract class AbstrctBuilder {

    public abstract CarBuilder buildWheel();

    public abstract CarBuilder buildBody();

    public abstract CarBuilder buildEngine();

    public abstract Car buildUp();
}

具体建造者

/**
 * 具体建造者
 */
public class CarBuilder extends AbstrctBuilder{
    Car car = new Car();
    @Override
    public CarBuilder buildWheel() {
        car.setWheel("超级耐用的轮子");
        return this;
    }
    @Override
    public CarBuilder buildBody() {
        car.setBody("翡冷翠车身");
        return this;
    }
    @Override
    public CarBuilder buildEngine() {
        car.setEngine("2.5T蓝鲸发动机");
        return this;
    }
    @Override
    public Car buildUp() {
        return car;
    }
}

指挥者

/**
 * 指挥者
 */
public class Director {
    AbstrctBuilder carBuilder;

    public Director(AbstrctBuilder carBuilder) {
        this.carBuilder = carBuilder;
    }
    public Car construct(){
        return carBuilder.buildWheel().buildBody().buildEngine().buildUp();
    }
}

测试

/**
 * 测试
 */
public class BuilderTest {
    @Test
    public void testBuildder(){
        AbstrctBuilder carBuilder = new CarBuilder();
        Director director = new Director(carBuilder);
        Car car = director.construct();
        System.out.println(car);
    }
}

测试结果
在这里插入图片描述

总结

1.构建者模式适合构建由复杂部分构成的对象,但是当被构建的产品内部发生变化时调整成本很大
2.可以将Builder每个构建部件的方法返回值设置为Buider,这样在调用的时候更加方便

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值