Effective java读书札记第一条之 考虑用静态工厂方法取代构造器
对于类而言,为了让client获取它自身的一个实例,最经常使用的方法就是提供一个共同拥有的构造器。
另一种放你发,也应该子每一个程序猿的工具箱中占有一席之地。类能够提供一个共同拥有的静态 工厂方法。它仅仅是返回类的实例的静态方法。
类能够通过静态工厂方法类提供它的client(对象),而不是通过构造器。提这样做的优点有:
1.静态工厂方法与构造器不同的第一大优势在于。它们有名称.比方构造器BigInteger(int,int,Random)返回的BigInteger可能为素数,假设用名为BigInteger.probablePrime的静态工厂方法来表示,显然更为清楚。当一个类须要多个带有同样签名的构造器时,就用静态工厂方法取代构造器,而且谨慎地选择名称以便突出它们之间的差别。
2.静态工厂方法与构造器不同的第二大优势在于,不必再每次调用它们的时候都创建一个新对象。这个详细不说了,能够看下单例模式。
3.静态工厂方法与构造器不同的第三大优势在于。它们能够返回原返回类型的不论什么子类型的对象。这项技术适用于基于接口的框架。使用这样的静态方法时。甚至要求额client通过接口来引用被返回的对象。而不是通过它的实现类来引用被返回的对象,这是一种良好的习惯。
4.静态工厂方法的第四大优势在于。在创建參数化类型的实例的时候,它们使代码变得更加简洁。
缺点:
静态工厂方法的主要缺点在于,类假设不含有共同拥有的或者受保护的构造器,就不能被子类化。
静态工厂方法的第二个缺点在于,它们与其它的静态方法实际上没有不论什么差别。
在API文档中,它们没有像构造器那样明白标识出来。因此,对于提供了静态工厂方法而不是构造器的类来说。要想查明怎样实例化一个类,这是很困难的。只是你通过在类或者接口凝视中关注静态工厂,并遵守标准的命名习惯,也能够弥补这一劣势。以下是一些惯用名称:
valueOf
of
getInstance
newInstance
getType
newType
简而言之。静态工厂方法和共同拥有构造器都各实用处,我们须要理解它们各自的唱出。
静态工厂通常更加合适,因此切忌第一反应就是提供公有的构造器,而不先考虑静态工厂。
相关文章
- Java基础知识及细节之方法
- java用什么编译器_Java用Java编译「建议收藏」
- java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例
- java判断一个对象是否为空_Java中判断对象是否为空的方法的详解
- java编译命令是什么_Java编译命令整理
- java生成时间戳类型_Java获取当前时间戳的方法有哪些
- java 输出格式_java格式化输出方法「建议收藏」
- java常量有哪些_Java中的常量有哪些?
- java uuid 随机数_Java随机数和UUID[通俗易懂]
- java dom4j 添加节点_Java dom4j获取,添加,删除,查找,设置Element节点方法「建议收藏」
- JAVA的使用_Java集成开发环境
- ringbuffer java例子_Java RingBuffer.publish方法代碼示例「建议收藏」
- java的栈内存和堆内存_Java本地方法栈
- java 取当前时间年月日_Java获取当前时间年月日的方法[通俗易懂]
- HashMap_java的hashcode方法
- java mutator,Java – 使用Accessor和Mutator方法「建议收藏」
- JAVA生成uuid_java接口default方法
- java查找字符的方法_Java字符串查找(3种方法)
- Java 近期新闻:GlassFish 7.0、Payara 平台、Apache NetBeans 16
- java生成UUID的方法总结详解程序员
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- Java继承中成员方法的overload(重载/过载)详解编程语言
- Java联合Redis:建立良好数据连接(java连接redis)
- Linux系统中下载Java的方法(linux下java下载)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)
- 版本Linux查看Java版本的简单方法(linux 查看java)
- Java程序员的MySQL数据库之旅(java操作mysql数据库)
- 查找Java进程:Linux解决方案(linux查找java进程)
- 使用Linux安装Java轻松搞定!(linux java安装)