考虑用静态工厂方法代替构造器(读书笔记)

本文深入探讨了静态工厂方法的概念及其实现方式,列举了其相较于构造器的主要优势,包括提高代码可读性、减少对象创建、灵活性增强以及简化泛型实例化。同时,也指出了静态工厂方法的局限性,并提供了惯用的命名规范。

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

考虑用静态工厂方法代替构造器

读书笔记

一.什么是静态工厂方法

工厂方法就是返回一个类的实例的静态方法。

例如,将一个基本类型的布尔值封装成一个对象

Boolean valueOf(boolean bool){
    return bool ? Boolean.TRUE : Boolean.False;
}

二.静态工厂方法的优点

1.有自己的名字

给方法起名字时,最基本的就是要做到见名知意当一个对象的构造方法很多时,通过方法签名(方法名以及参数)用户很难理解每一个构造函数会产生怎样的对象,也有可能两个构造方法的参数类型一致,给开发者和使用者造成很大的不便

以上问题,可以通过静态工厂方法来解决,对于产生特定类型的对象时,可以通过简单的单词来描述这个对象,这样,可读性会大大提高。

2.不必每次都产生新的对象

也就是说,对于不必要多次生成新对象的情况,可以直接返回已经存在的对象的引用,可以提高效率。

3.返回任何子类型的对象

调用构造方法产生的对象一定是构造方法所在类的实例,而静态工厂方法更加灵活。

应用:服务提供者框架

好处:这样的静态工厂方法的返回值一般是接口类型,可以返回实现了该接口的所有类的实例。

4.创建参数化类型实例时,使代码变得更简洁

三.静态工厂方法的缺点

1.类如果没有公有或受保护的构造方法,则没办法被实例化。

2.与其他静态方法没有区别

这个主要是对于javadoc工具产生的文档中,不会标注静态工厂方法的特殊性。

四.静态工厂方法的惯用名称

valueOf --> 返回的实例与参数有相同的值,常用作类型转换

of --> valueOf的一种替代

getInstance --> 返回的实例是通过方法的参数描述的(不能说与参数有相同的值)

newInstance --> 像getInstance一样,但该方法保证返回的每个实例都互不相同。

getType --> 像getInstance一样(该方法处于另一个类中,Type为返回对象的类型)

newType --> 像newInstance一样(该方法处于另一个类中,Type为返回对象的类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值