建造者模式

建造者模式

建造者模式(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);
    }
}
相关推荐
FYKJ_2010几秒前
django学习成绩预警系统10905
java·javascript·spring boot·python·spark·django·php
卓怡学长10 分钟前
w192基于springboot教务管理系统
java·数据库·spring boot·spring·maven·intellij-idea
逸Y 仙X14 分钟前
Spark SQL
java·大数据·sql·spark
码农颜15 分钟前
6.4.1 监听连接
java·数据库·mysql
mldong15 分钟前
会签三兄弟:并行/串行/按比例的实现与取舍
java·架构
被怪兽吃掉了16 分钟前
5.2.1一维组数定义方式
开发语言·c++·算法
TheBestRucy24 分钟前
Python 九阳神功之肆:网络编程 · Socket 从入门到实战
开发语言·网络·python
j7~27 分钟前
【C++】《C++二叉搜索树(BST)从入门到精通:概念、实现与Key/Value模型全解析》
开发语言·c++·学习·二叉搜索树
hehelm28 分钟前
仿muduo库实现高并发服务器—Channel类
linux·服务器·开发语言·网络·c++
末代iOS程序员华仔30 分钟前
Codex + Figma 生成 Objective‑C (UIKit) 完整工作流
c语言·开发语言·figma