建造者模式

建造者模式

建造者模式(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);
    }
}
相关推荐
2301_7756023823 分钟前
C++11 多线程编程-小白零基础到手撕线程池
开发语言·c++
码农豆豆38 分钟前
11.C++程序中的常用函数
开发语言·c++·算法
无极程序员39 分钟前
读取到json数据拿出来,修改后重新写入json文件
android·java·开发语言·后端·json·php
艾伦~耶格尔42 分钟前
Java 之 ssm框架入门
java·开发语言·后端·spring·mybatis·ssm
尘浮生43 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的美容院管理系统设计与实现(源码+数据库+文档)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
jcfszxc1 小时前
【Rockchip系列】RGA imcopy 性能分析:不同缓冲区拷贝的对比(含实验代码)
开发语言·c++·rknn·rockchip·rknn-toolkit2
GSCSDNeo1 小时前
9.23 My_string.cpp
开发语言·c++
上晴下雪1 小时前
1. go 环境与命令
开发语言·后端·golang
曳渔1 小时前
Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )
java·开发语言·数据结构·算法·哈希算法·散列表
李是啥也不会1 小时前
JavaScript中的输出方式
开发语言·前端·javascript