什么时候使用建造者模式

一、重叠构造器模式

首先我们看一下使用重叠构造器,这样会带来什么样的问题。我们先创建一个实体类,然后再new一个该实体类的实例对象
在这里插入图片描述

在这里插入图片描述
发现了什么问题没有?
重叠构造器可行,但是当有许多参数的时候,客户端代码会很难编写,并且仍然较难以阅读。参数过多,当我们不小心颠倒了其中两个顺序时(比如age和weight),编译器不会报错,就算运行也不会有问题,但是数据与现实对应起来就不合常理了。


二、JavaBeans模式

还有一个常用的方式就是JavaBeans模式,在这种模式下,先调用一个无参构造器来创建对象,然后再调用setter方法来设置每个必要的参数,以及每个相关的可选参数。
在这里插入图片描述
在这里插入图片描述
优点:创建实例很简单,这样产生的代码读起来也很容易
缺点:
1.因为构造过程被分到了几个调用中,在构造过程中JavaBeans可能处于不一致状态。

2.JavaBeans模式使得把类做成不可变(final)的可能性不复存在,这就需要程序员付出额外的努力来确保它的线程安全。


三、建造者模式

在建造者模式下,既能保证像重叠构造器模式那样的安全性,也能保证像JavaBeans模式那么好的可读性。
在这里插入图片描述
在这里插入图片描述
它不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器(或者静态工厂),得到一个Builder对象。然后客户在Builder对象上调用类似于setter的方法,来设置每个相关的可选参数。为什么能够链式调用呢?因为设置属性的方法返回的是this。


四、总结

个人用的比较多的是JavaBeans模式,当然我们应该具体情况具体分析,多思考总是好的。知其然,更要知其所以然。如果有好的意见或建议可以一起交流,谢谢大家

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值