@Builder和@Accessors那个更香

一、对象的创建方法

  1. new Object()
  2. 工厂模式
  3. 建造者模式

二、优劣性

2.1 直接创建对象

  1. 构造方法多个参数时无法明确含义,比如Object(String name, String phone)Object(String name, String addr)
  2. 当参数大于4个时,需要组合所有参数的构造方法,造成代码太大

2.2 使用工厂模式

可以通过定义方法newInstancegetInstance来确定单例还是多例,再则可以通过方法名来区别方法参数

2.3 建造者模式

  1. 支持链式表达式
  2. 当多线程环境对共享变量进行初始化操作时,可能将未完全初始化的对象暴露出去造成安全问题,这是可以使用建造者模式来保证对象赋值时一定是初始化完成后。

三、Lombok的@Builder和@Accessors区别

3.1@Builder

@Builder就是基于建造者模式支持链式操作,但很多时候都是构造失血模式的Bean或者没有共享变量,这时候为了链式操作就新建一个builder是不是有点大材小用

3.2@Accessors

@Accessors就可以解决上述的问题,支持链式操作,同时减少多余对象的创建,builder类元信息又可以减少

四、坑

有的开源反射工具包对对象进行浅拷贝时,获取set方法元信息时会判断方法返回值是否是void,这时候@Accessors就会出现异常

瞬间就没有那么香了呢~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值