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

相关推荐
haofafa6 分钟前
STL之动态数组
开发语言·c++
INFINI Labs9 分钟前
使用 Docker Compose 轻松实现 INFINI Console 离线部署与持久化管理
java·docker·eureka·devops·docker compose·console·easyserach
Cosolar10 分钟前
国产麒麟系统 aarch64 架构 PostgreSQL 15 源码编译安装完整教程
java·后端
GalaxyPokemon17 分钟前
PlayerFeedback 插件开发日志
java·服务器·前端
earthzhang202139 分钟前
【2051】【例3.1】偶数
开发语言·数据结构·算法·青少年编程·图论
天天摸鱼的java工程师1 小时前
别再写那些重复代码了!8年Java老兵教你用 Hutool 提升开发效率
java·后端
喝杯绿茶1 小时前
springboot中的事务
java·spring boot·后端
昨天的猫1 小时前
原来项目中的观察者模式是这样玩的
后端·设计模式
专注VB编程开发20年1 小时前
.NET Reflector反编绎,如何移除DLL中的一个公开属性
开发语言·c++·c#
麦兜*1 小时前
多阶段构建:打造最小化的 Spring Boot Docker 镜像
java·spring boot·后端·spring cloud·docker