当前位置:网站首页>How to make good use of builder mode
How to make good use of builder mode
2022-08-04 20:25:00 【51CTO】

介绍
I wrote a project some time ago,An attribute of a class is called more than one.Just started writing a bunch directlyset代码,后来setThe code is just too much,真心看不下去了,Refactored a bit using the builder pattern,嗯,看起来舒服多了.Basically, the builder pattern is used in many frameworks,每个JavaProgrammers must have used the builder pattern too,You just don't realize that this is the builder pattern.
就像你用Collections.sort(List,Comparator)和Arrays.sort(Object[],Comparator)This is a typical implementation of the strategy pattern,Different effects are achieved by passing in different comparators.
改造过程
First let me demonstrate the process of my transformation,用了Lombok插件,不会的可以百度一下.
原来的实现
测试类
后来的实现
测试类
全程链式调用,Know clearly what each field means,And also save the number of lines,not too cool.
How to write a builder pattern?
Look directly at the final compilation generatedclassThe contents of the decompiled file
I don't think I need to explain what this code means for you,That's two parts.
1.Generate builder class,Assign a value to the builder class
2.Use the builder class to generate the desired class
恭喜你,Already understand what the builder pattern is.
Lombok中@Builder注解的使用
if available in your projectLombok插件,You don't have to write your own builder class,直接用@Builder注解即可.如果不可以,Writing a builder class that mimics the above class is also [email protected] the following points to note.
There is no case of inheritance
上面已经演示了
There are cases of inheritance
1.对于父类,使用@AllArgsConstructor注解
2.对于子类,Manually write full-parameter constructors,Internally calls the parent class full parameter constructor,Used on subclass full-argument [email protected]注解
在框架中的应用
基本上所有的JavaFrameworks use the builder pattern,Because chained assignment is really cool.我GoogleA little bit of code using the builder pattern,方便大家理解
Guava Cache框架
参考博客
[1]https://mp.weixin.qq.com/s/91C9X3Zn6Es66yqTqgnPFA
[2]https://mp.weixin.qq.com/s/8Ults75_X8gyshWCatCzUw
边栏推荐
猜你喜欢
随机推荐
ts集成和使用
The difference between Client Side Cache and Server Side Cache
常用正则表达式[通俗易懂]
Retrofit的使用及原理详解
How to promote the implementation of rural revitalization
Latex分章节、分段落编译:input{}与include{}的区别
AWS SES 的监控和告警
MySQL字段类型
WIN10系统如何开启终端
简单理解 JS 事件循环
Client Side Cache 和 Server Side Cache 的区别
June To -.-- -..- -
刷题-洛谷-P1307 数字反转
Aura clock chip generation configuration file script
Tensorflow2 环境搭建
如何使用 jMeter Parallel Controller - 并行控制器以及一些常犯的错误
刷题-洛谷-P1179 数字统计
LED的C语言应用程序
搭建MyCat2一主一从的MySQL读写分离
win10 uwp modify picture quality compress picture









