建造者模式

建造者模式

建造者模式(Builder Pattern)允许你逐步构建复杂的对象。这种模式将对象的构造过程与其表示分离,使得相同的构造过程可以创建不同的表示。建造者模式特别适用于需要创建具有多个部件或复杂配置的对象时。

使用建造者模式构造对象并完成链式调用:

需要创建的对象:

java 复制代码
@Data
@ToString
public class Phone {
    String cpu;
    String mem;
    String disk;
    String camera;
}

抽象建造者类及其实现子类:

java 复制代码
public abstract class AbstractPhoneBuilder {
    Phone phone;
    public abstract AbstractPhoneBuilder customCpu(String cpu);
    public abstract AbstractPhoneBuilder customMem(String mem);
    public abstract AbstractPhoneBuilder customDisk(String disk);
    public abstract AbstractPhoneBuilder customCamera(String camera);
    public Phone getPhone(){
        return this.phone;
    }
}
java 复制代码
public class PhoneBuilder extends AbstractPhoneBuilder{
    public PhoneBuilder() {
        this.phone = new Phone();
    }

    @Override
    public AbstractPhoneBuilder customCpu(String cpu) {
        phone.setCpu(cpu);
        return this;
    }

    @Override
    public AbstractPhoneBuilder customMem(String mem) {
        phone.setMem(mem);
        return this;
    }

    @Override
    public AbstractPhoneBuilder customDisk(String disk) {
        phone.setDisk(disk);
        return this;
    }

    @Override
    public AbstractPhoneBuilder customCamera(String camera) {
        phone.setCamera(camera);
        return this;
    }
}

测试:

java 复制代码
public class Main {
    public static void main(String[] args) {
        PhoneBuilder builder = new PhoneBuilder();
        Phone phone = builder.customCpu("晓龙999")
                .customMem("32g")
                .customDisk("1tb")
                .customCamera("1亿")
                .getPhone();
        System.out.println(phone);
    }
}
相关推荐
nanxun88621 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
怕浪猫21 小时前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java