如何使用建造者模式
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容介绍了"如何使用建造者模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1使用场景在阅读源码
千家信息网最后更新 2025年02月23日如何使用建造者模式
本篇内容介绍了"如何使用建造者模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1使用场景
在阅读源码过程中经常看到建造者模式,主要是为了简化复杂对象的创建。
具体那些房子啥的举例子就不扯了,以实际工作中的应用为主。
@Builder 注解
如果小伙伴使用 lombok 这个框架的话,那一定对 @Builder 这个注解不会陌生。
@Data @Builder public class UserRespVo { /** * 用户名字 */ private String userName; /** * 用户 id */ private String userId; public static void main(String[] args) { UserRespVo respVo = UserRespVo.builder() .userId("liuzhihang") .userName("程序员小航") .build(); } }
看一下编译后的 .class 文件。
public class UserRespVo { private String userName; private String userId; UserRespVo(final String userName, final String userId) { this.userName = userName; this.userId = userId; } public static UserRespVo.UserRespVoBuilder builder() { return new UserRespVo.UserRespVoBuilder(); } public static class UserRespVoBuilder { private String userName; private String userId; UserRespVoBuilder() { } public UserRespVo.UserRespVoBuilder userName(final String userName) { this.userName = userName; return this; } public UserRespVo.UserRespVoBuilder userId(final String userId) { this.userId = userId; return this; } public UserRespVo build() { return new UserRespVo(this.userName, this.userId); } } }
其实就是在内部创建了一个 Builder 的静态内部类,以及一个 builder() 方法。这样就可以进行链式调用了。
如果对于复杂对象的创建,小伙伴也可以采用 lombok 的这种方式,先创建 builder 对象,然后一步一步构建对象。
在源码和工作中
在阅读源码,或者是使用开源软件的时候,经常会遇到建造者模式,比如 OkHttp3Utils
private static OkHttpClient client = new OkHttpClient .Builder() .readTimeout(60, TimeUnit.SECONDS) .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(120, TimeUnit.SECONDS) .build();
比如 Eureka 源码中 InstanceInfo 的构建。
InstanceInfo.Builder
比如使用 Elasticsearch 创建 client 的代码
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http")) .build();
还比如 Mybatis Plus,等等等……
"如何使用建造者模式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
模式
对象
源码
复杂
内容
实际
小伙
小伙伴
更多
注解
用户
知识
过程
工作
实用
陌生
学有所成
接下来
代码
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库设计 项目
网络安全密匙是什么东西
一个软件开发成本一般需要多少钱
网络安全管理和运维
如何备份网站上的数据库
数据库开发生成报表
idea怎么做数据库课程设计
精算软件需要数据库
vpn服务器名称怎么填
无为软件开发周期多长
我的世界怎么进手机版的服务器
网络安全协会吴阳
软件开发专业程序员
网络安全法安全监管机构
小学网络安全宣传日
庐阳区口碑好的网络技术哪家好
一个数据库能建几个用户
浙江戴尔服务器维修服务云空间
天津通讯软件开发设施
360服务器安全狗下载
全国高校网络安全知识竞赛试题
M.ECHO曼音科技软件开发
上海软件开发的人天单价
江苏服务器维修哪家便宜
软件开发工程师怎么收集代码
win10用友数据库卸载
勘探数据库 专利
海北州软件开发价格走势
电销pc端系统软件开发
数据库Ctrl T是什么