《Effective Java》遇到多个构造器参数时要考虑用构造器

当对象需要多个参数时,传统的构造函数方式可能导致代码冗长且易出错。JavaBeans模式虽然可由编译器生成,但存在线程安全风险。Effective Java推荐使用Builder模式,通过静态内部类实现线程安全的属性设置,并提供链式调用的便利。虽然Builder模式代码量稍多,但更显优雅。

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

如果一个对象有多个参数时,应该如何处理?

代码大全2中提到过,一个函数的参数最好不要超过7个,我们熟悉的线程池参数就是7个,构造方法也不例外,在笔记本电脑中,一屏幕代码最多也就是7个左右的参数。

构建一个对象,通常我们会如何处理呢?

1、构造函数,下面的类BuilderDemo有8个属性

这样的代码是十分冗长的,如果有多个构造函数的话,是十分混乱的。

于是我们有个新的想法,创建这些属性的getter/setter方法

2、JavaBeans模式

这样的做法因为将设置属性分为了很多步,可能会出现线程安全问题,导致程序出现对象不一致的情况,需要开发人员自己去把控。

3、Builder模式

可耻的照扒了书中的代码如下:

过程就是创建一个静态内部类,成员变量通过final修饰保证线程安全,通过返回this,像链式一样调用。

总结:显然在参数过多的情况下,通过构造函数来构建对象的方式是不可取的,effective java作者推荐了Builder模式,从上面我们可以看出,其实增加了很多代码量(问号脸)JavaBeans的方式是可以通过编译器一键生成的,个人认为:从工作效率的角度看,JavaBeans的方式用的更多,而Builder的方式看起来更优雅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值