创建和销毁对象(2)——遇到多个构造器参数是要考虑用构建器

本文探讨了在Java中处理多个构造器参数时所面临的挑战,对比了重叠构造器模式、JavaBeans模式及Builder模式的优缺点。Builder模式不仅提高了代码的可读性和维护性,还能够有效地管理复杂的构造过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【2、遇到多个构造器参数是要考虑用构建器】

静态工厂和构造器有个共同的局限性:它们都不能扩展到大量的可选参数。

大多数程序员吧,应该习惯采用重叠构造器模式,这种方式提供一个只有必要参数的构造器,第二个构造器有一个参数可选,第三个有两个参数可选,以此内推,最有一个构造器包含所有可选参数。

重叠构造器模式其实是可行的,但是当我们遇到有很多参数的场景的时候,客户端代码会非常难编写,并且很难阅读,没有可读性,必须每一行每一个参数读懂才知道所有的含义。如果一不小心传值参数顺序错了一个、两个。编译也不会出错,但是运行时会有出错的行为。

当我们遇到上述问题时(许多构造器参数的时候)。有第二种方式代替办法。即JavaBeans模式。这种模式,调用一个无参的构造器来创建对象,然后调用setter方法来设置每个必要的参数。就像hibernate实体一样给予get。set方法。这种也有一个严重的缺点,因为构造过程被分到几个调用中,所以在构造过程中,javaBeans可能处于不一致的状态,这种就需要程序员确保它的线程安全。

当然,这里还提供第三种方法,可以保证上两种的优势,避免他们的缺点。这就是Builder模式的一种形式,得到一个builder对象。然后客户端在builder对象上调用类似于setter的方法,来设置每个相关的可选的参数。

如果类的构造器或者静态工厂中具有很多个参数,设计这种类的时候,Builder模式是个不错的选中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值