Java 设计模式 构建者模式

文章目录

  • [1 概念](#1 概念)
  • [2 使用方法](#2 使用方法)
        • [1 创建步骤:](#1 创建步骤:)
        • [2 使用步骤:](#2 使用步骤:)
  • 参考

1 概念

builder模式又叫建造者模式,属于创建型模式

作用:将一个复杂对象的构建与他的表示分离,可以一步一步构建对象,而不是使用构造函数构造一次性构造

通过一步步构造复杂对象,使得代码更加清晰,避免构造器中参数过多导致代码的可读性和易用性变差

2 使用方法

1 创建步骤:
java 复制代码
User user = User.builder().property(property).build();
  1. 创建静态内部类Builder,并创建静态方法builder
  2. 实现私有构造方法,并使用Builder作为参数
  3. 静态内部类使用属性名作为方法名,并传入属性
  4. 静态内部类实现build方法,返回创建的对象
2 使用步骤:
  1. 外部使用.builder 获取Builder
  2. 使用.property(property) 及进行赋值
  3. 调用.build 构建并返回类对象

Demo:

java 复制代码
public class User{

    private int id;
    private String name;
    private int age;

    // 1 构建匿名内部类, 属性与User类属性一直
    public static class Builder {
        private int id;
        private String name;
        private int age;

        public Builder id(int id) {
            this.id = id;
            return this;
        }

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

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        // 4 最终构建返回
        public User build() {
            return new User(this);
        }

    }

    // 2 创建静态builder方法,返回Builder类进行构造
    public static Builder builder() {
        return new Builder();
    }

    // 3 构造私有构造方法,将Builder中的属性进行赋值
    private User(Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
        this.age = builder.age;
    }

}

参考

Builder模式 Java Builder 模式 https://blog.csdn.net/HaHa_Sir/article/details/120105014

相关推荐
benchmark_cc5 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
阿维的博客日记5 小时前
MultipartFile 是不是表示仅仅是一个分片?
java·后端·spring·multipartfile
程序员无隅6 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
Python+996 小时前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
二炮手亮子6 小时前
浅记java线程池
java·开发语言
一路向北North6 小时前
Spring Security OAuth2.0(23):分布式系统授权-转发明文给微服务
java·spring·微服务
zmzb01037 小时前
C++课后习题训练记录Day157
开发语言·c++
dunge20267 小时前
2026年7月最新ChatGPT Plus / Pro 与 Codex:当 AI Agent 最新5.6版本来袭,必须理解事务、幂等与补偿
开发语言·人工智能·python
爱吃牛肉的大老虎8 小时前
rust基础之环境搭建
java·开发语言·rust
openKylin8 小时前
与全球技术演进同频,openKylin 3.0从C迈向Rust
c语言·开发语言·rust·开源·开放原子·openkylin