Effictive Java 读书笔记

本文探讨了在Java中使用静态工厂方法替代构造函数创建对象的优势,包括提高代码可读性、控制实例数量以及创建松耦合系统接口的能力。同时讨论了如何通过私有构造函数增强Singleton模式。

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

Effictive Java
[color=red][size=x-large]1 考虑用静态工厂方法代替构造函数来创建对象[/size][/color]
[color=green][size=large]静态工厂方法可以封装实例的细节,并且能控制实例的数量,减轻jvm的堆栈中的压力,与用new语句调用的构造方法相比,有以下区别: [/size][/color]
1:构造方法的名字必须与类名相同。这一特性的优点是符合Java语言的规范,缺点是类的所有重载的构造方法的名字都相同,不能从名字上区分每个 重载方法,容易引起混淆。静态工厂方法的方法名可以是任意的,这一特性的优点是可以提高程序代码的可读性,在方法名中能体现与实例有关的信息
2:每次执行new语句时,都会创建一个新的对象。而静态工厂方法每次被调用的时候,是否会创建一个新的对象完全取决于方法的实现。根据这一特点,静态工厂可以创建以下几种方式的对象:[color=blue]
<1> 单例类:只有惟一的实例的类。
<2>枚举类:实例的数量有限的类。
<3>具有实例缓存的类:能把已经创建的实例暂且存放在缓存中的类。
<4>具有实例缓存的不可变类:不可变类的实例一旦创建,其属性值就不会被改变。
[/color]
3:new语句只能创建当前类的实例,而静态工厂方法可以返回当前类的子类的实例,这一特性可以在创建松耦合的系统接口时发挥作用。
[color=green][size=large]但静态工厂方法又有缺点:[/size][/color]
1:如果将要创建的对象的构造方法是私有的或是default的,就有可能不能创建该对象。
2:采用构造函数实例化对象,是语言的规范,而静态工厂方法与其他的静态方法没有区别,就增加了用户使用的区别。但这可以尽量采用一些家喻户晓的名字解决,让用户看到改名字就知道该方法是静态工厂方法。如getInstance()。
[color=red][size=x-large]2 使用似有构造函数加强singleton属性[/size][/color]
在此,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值