当前位置: 首页 > news >正文

[Java实战经验]链式编程与Builder模式

目录

  • 链式编程
  • Builder模式

链式编程

链式编程(Fluent AP)是一种编程风格,它通过在同一个对象上连续调用多个方法来执行一系列操作(让方法返回对象本身return this))。这种风格的编程使代码更加简洁,提高了代码的可读性和可维护性。

允许使用Lombok的团队可以使用@Accessors(chain = true)注解,让setter方法返回this,从而实现链式调用。

Builder模式

当对象构造方法入参很多、构造对象过程复杂时,此时构造方法可读性差,需要为不同的参数组合定义多个重载构造方法,构造方法爆炸。

此时,使用构造模式来代替构造方法创建对象。
即,创建静态内部类Builder,通过链式编程分步设置参数,最终通过build()方法创建目标对象。

示例如下:

public class User {// 必选参数private final String name;// 可选参数private final int age;private final String address;private final String phone;// 私有构造方法,只能通过 Builder 构建private User(Builder builder) {this.name = builder.name;this.age = builder.age;this.address = builder.address;this.phone = builder.phone;}// 静态内部 Builder 类public static class Builder {// 必选参数(通常通过构造方法传入)private final String name;// 可选参数(设置默认值)private int age = 0;private String address = "";private String phone = "";// 必选参数构造public Builder(String name) {this.name = name;}// 链式设置方法(返回 Builder 自身)public Builder age(int age) {this.age = age;return this;}public Builder address(String address) {this.address = address;return this;}public Builder phone(String phone) {this.phone = phone;return this;}// 最终构建方法public User build() {return new User(this);}}// Getter 方法(略)
}

在允许使用Lombok的团队,可以使用Lombok 简化代码,即通过 @Builder 注解自动生成 Builder 类。

import lombok.Builder;
import lombok.Getter;@Getter
@Builder
public class User {private final String name;private final int age;private final String address;private final String phone;
}// 使用
User user = User.builder().name("Alice").age(25).address("上海").build();

相关文章:

  • MySQL索引和事务
  • Filter、Interceptor、Spring AOP 的执行顺序
  • 深入解析Linux软件包管理:apt/yum源配置与Vim编辑器高效使用指南
  • Day08 【基于jieba分词实现词嵌入的文本多分类】
  • 维港首秀!沃飞长空AE200亮相香港特别行政区
  • XCTF-web(一)
  • 旅游特种兵迪士尼大作战:DeepSeek高精准路径优化
  • (五)机器学习---决策树和随机森林
  • C/C++运算
  • SMT贴片:现代电子制造的核心工艺
  • CASAIM与京东方达成合作,CASIAM IS智能联动AOI漏光检测攻克屏幕翘曲度及漏光检测难题
  • MuJoCo 画出机械臂末端轨迹进行可视化(附代码)
  • 编程技能:调试01,调试介绍
  • Summary
  • ES和MySQL概念对比
  • 向量数据库
  • 解锁元生代:ComfyUI工作流与云原生后端的深度融合
  • 【设计模式】观察者
  • RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.
  • QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)
  • “浦东时刻”在京展出:沉浸式体验海派风情
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 复旦设立新文科发展基金,校友曹国伟、王长田联合捐赠1亿助力人文学科与社会科学创新
  • 特色业务多点开花,苏州银行擦亮金融为民底色