文章16 | 阅读 7162 | 点赞0
当一个类的成员变量比较多,同时,大部分的成员变量有默认值,仅有少量的成员变量需要初始化时,我们该如何设计这个类?我们需要让该类满足以下两个要求:
这种需求和建造者模式的设计场景不期而合。同时,Lombok提供了@Builder注解用于快速地实现一个类的建造者模式。
讲解@Builder之前,首先,要求读者对建造者模式有一定的了解。通过简书上的《一篇文章就彻底弄懂建造者模式(Builder Pattern)》对可以建造者模式有个初步的了解,并且建造者模式的优点在于:可以将构造器的setter方法名取成类似注释的方式,这样我们可以很清晰的知道刚才究竟设置的什么值,可读性较高。
从@Builder的源码和官网的介绍来看,我觉得@Builder的实用性不如它的另一个注解@Accessors。因为@Builder能做到的,@Accessors也能做到,并且理解起来简单(希望有前辈能做更具体详细的解释,这两个注释,从我的理解来看,我更倾向于@Accessors)。@Builder在创建对象时具有链式赋值的特点,但是在创建对象后,就不能链式赋值了,只能采用setter方法,虽然toBuilder注解属性可以复用对象的成员变量值,但是却返回一个新的对象,这不是我们所希望看到的。然而,@Accessors却可以在任何时候对对象的成员变量实现链式赋值。如果是对实用性看重的读者,可以直接跳转至《Lombok实验室之@Accessors使用》。
不过,建造者模式在源码中十分常见,特别是在各类数据源的创建过程中,掌握它更有利于阅读源码。
可以直接阅读该文《Lombok 实战 —— @Builder》,该博主也有Lombok的系列文章,推荐读者阅读。
略
本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。
源码地址:gitee
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/cauchy6317/article/details/102680535
内容来源于网络,如有侵权,请联系作者删除!