Effective Java 第一条:考虑用静态工厂方法代替构造器
优势:
第一条:静态工厂方法有名称,可以从名字看出方法的作用,容易使用。
第二条:不必每次调用都创建一个新对象。
第三条:静态工厂方法可以返回原类型的任何子类型的对象。
第四条:在创建参数化类型的实例的时候,他们是代码变得更加简洁。
缺点:
第一条:类如果没有共有的或者受保护的构造器,就不能被子类化。
第二条:他们与其他的静态方法实际上没有任何区别。这样在API文档里难于查明如何实例化一个类。
一个简单实现:
public interface Service{}
public interface Provider {
}
public class Services {private Services(){ }private static final Map<String, Provider> providers =new ConcurrentHashMap<String, Provider>();public static final String DEFAULT_PROVIDER_NAME = "<DEF>";public static void registerDefaultProvider(String name, Provider p){registerProvider(DEFAULT_PROVIDER_NAME);}public static void registerProvider(String name, Provider p) {providers.put(name, p);}public static Service newInstance() {return newInstance(DEFAULT_PROVIDER_NAME);}public static Service newInstance(String name) {Provider p = providers.get(name);if(p == null)throw new IllegalArgumentException("No provider registered with name: " + name);return p.newService();}}
转载于:https://blog.51cto.com/wjkvipgood/1395303
Effective Java 第一条:考虑用静态工厂方法代替构造器相关推荐
- 小鸡爪读Effective Java记录1:用静态工厂方法代替构造器
//小鸡爪 == 菜鸡 遇到多个构造器参数时要考虑使用构建器 Preface 静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数.比如用一个类表示包装食品外面显示的营养成分标签.这 ...
- 第一条:考虑用静态工厂方法代替构造器
转载链接:https://www.jianshu.com/p/ceb5ec8f1174 1.序:什么是静态工厂方法 在 Java 中,获得一个类实例最简单的方法就是使用 new 关键字,通过构造函数来 ...
- java 静态工厂方法代替构造器的好处
Java 的静态工厂方法 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名字 2.2 第二个优势,不用每次被调用时都创建新对象 2.3 第 ...
- Java九十条经验法则之第一条:用静态工厂方法代替构造器
一.用静态工厂方法代替构造器的优势 1.静态构造方法与构造器不同的第一大优势在于,他们有名称,而构造器名字相同,容易混淆,例如: 使用静态构造方式的方式,我们就可以通过知道产生的是什么样类型的对象,而 ...
- 《Effective Java》学习笔记 - (1) 使用静态工厂方法代替构造器
文章目录 前言 使用静态工厂方法代替构造器 1. 优点 1.1 静态工厂方法有名称 1.2 不必每次调用的时候都创建一个对象 1.3 可以返回类型的任何子类型的对象 1.4 所返回的对象的类型可以随着 ...
- 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
文章目录 一. 用静态工厂方法代替构造器 优势: 劣势: 实例代码: 二. 遇到多个构造器参数时要考虑使用构建器 ① 重叠构建器 ② JavaBeans模式 ③ Builder模式 三. 用私有构造器 ...
- 第1条:考虑采用静态工厂方法代替构造器
第1条:考虑采用静态工厂方法代替构造器 第1条:考虑采用静态工厂方法代替构造器 对类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器.还有一种应该被程序员重视的方法:类提供 ...
- 静态工厂方法代替构造器实例_静态工厂方法与传统构造方法
静态工厂方法代替构造器实例 之前,我已经讨论过一些关于Builder模式的信息 , Builder Pattern是一种有用的模式,用于实例化具有几个(可能是可选的)属性的类,这些属性可以使读取,编写 ...
- 01、静态工厂方法替代构造器
考虑用静态工厂方法替代构造器 考虑使用静态工厂方法来替代构造器的原因: 静态工厂方法有名称:普通的构造器中,参数并不能很好地描述返回对象的特点,代码的阅读性不好. 考虑下面的程序: Random ra ...
- 用静态工厂方法代替构造器
1.静态工厂方法与构造器不同的第一大优势在于,它们有名称.如果构造器的参数本身没有确切地描述正被返回的对象,那么具有适当名称的静态工厂会更容易使用,产生的客户端代码也更易于阅读.例如,构造器Bigin ...
最新文章
- 【Runtime】动态添加方法demo
- JavaScript获取当前日期,昨天,今天日期以及任意天数间隔日期
- 数据集神经网络共同进步
- ubuntu python3.8安装pip_ubuntu16.04纯净版-安装Python3.8.1/升级pip
- SSH运维总结-【liunx学习】
- Django(part30)--原生的数据库操作方法
- traybox错误怎么办_toolbox提示错误无法使用怎么办?
- linux子线程运行的函数_Linux中线程使用详解
- java wav合并_用Java串联WAV文件
- Python 异步 ASGI 服务器及框架
- webrtc 静音检测(二)
- python基于Flask构建Web服务,解决Flask数据请求中的跨域问题
- centos7.2 部署k8s集群
- java游戏下载网址_手机java游戏下载网站
- JSP基础之九九乘法表(利用JSP脚本段制作一张九九乘法表)
- 算法设计与分析第二版源码
- 怎样在EDIUS中进行快速抠图
- 微软官方的SQLHelper类(含完整中文注释)
- 【无向图求最小割集】
- 五个优秀的视频格式转换工具