一起读经典-《Effective Java》1.1 考虑使用静态工厂方法代替构造器
1、静态工厂方法相较于构造器的优点 a、静态工厂方法能够自定义名称,使代码可读性更高 b、不必在每次调用的时候都创建新的实例 c、可以返回类型的子类型对象 2、静态工厂方法的常用名称: value of getInstance newInstance getType newType
import java.util.HashMap; import java.util.Map;/*** @description: 用于提供服务者注册API、服务访问API, 不可实例化 (类似JDBC中的Driver)* @author: huguanghui* @date: 2019-06-03 13:27*/ public class ServiceManager {//服务提供者缓存private static final Map<String, IProvider> providerMap = new HashMap<>();//默认服务提供者名称private static final String DEFAULT_PROVIDER_NAME = "def";//私有化构造器private ServiceManager() {}/*** 注册服务提供者** @param providerName* @param provider*/public static void registerProvider(String providerName, IProvider provider) {providerMap.put(providerName, provider);}public static void registerDefaultProvider(IProvider provider) {providerMap.put(DEFAULT_PROVIDER_NAME, provider);}/*** 获取服务访问实例** @param providerName* @return*/public static IService getInstance(String providerName) {IProvider provider = providerMap.get(providerName);if (provider == null) {throw new IllegalArgumentException("未找到相应的服务提供者:" + providerName);}return provider.newService();}public static IService getInstance() {return getInstance(DEFAULT_PROVIDER_NAME);} }
/*** @description: 服务接口 (类比于JDBC中的Connection类)* @author: huguanghui* @date: 2019-06-03 13:27*/ public interface IService {void doSomeService(); }
/*** @description: 服务提供者接口 (类似JDBC中的Driver)* @author: huguanghui* @date: 2019-06-03 13:27*/ public interface IProvider {IService newService(); }
github源码连接
转载于:https://www.cnblogs.com/sanbanfu/p/10967985.html
一起读经典-《Effective Java》1.1 考虑使用静态工厂方法代替构造器相关推荐
- 小鸡爪读Effective Java记录1:用静态工厂方法代替构造器
//小鸡爪 == 菜鸡 遇到多个构造器参数时要考虑使用构建器 Preface 静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数.比如用一个类表示包装食品外面显示的营养成分标签.这 ...
- 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
文章目录 一. 用静态工厂方法代替构造器 优势: 劣势: 实例代码: 二. 遇到多个构造器参数时要考虑使用构建器 ① 重叠构建器 ② JavaBeans模式 ③ Builder模式 三. 用私有构造器 ...
- 《Effective Java》学习笔记 - (1) 使用静态工厂方法代替构造器
文章目录 前言 使用静态工厂方法代替构造器 1. 优点 1.1 静态工厂方法有名称 1.2 不必每次调用的时候都创建一个对象 1.3 可以返回类型的任何子类型的对象 1.4 所返回的对象的类型可以随着 ...
- java 静态工厂方法代替构造器的好处
Java 的静态工厂方法 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名字 2.2 第二个优势,不用每次被调用时都创建新对象 2.3 第 ...
- Effective Java 第一条:考虑用静态工厂方法代替构造器
优势: 第一条:静态工厂方法有名称,可以从名字看出方法的作用,容易使用. 第二条:不必每次调用都创建一个新对象. 第三条:静态工厂方法可以返回原类型的任何子类型的对象. 第四条:在创建参数化类型的实例 ...
- Java九十条经验法则之第一条:用静态工厂方法代替构造器
一.用静态工厂方法代替构造器的优势 1.静态构造方法与构造器不同的第一大优势在于,他们有名称,而构造器名字相同,容易混淆,例如: 使用静态构造方式的方式,我们就可以通过知道产生的是什么样类型的对象,而 ...
- effective java 3th item2:考虑 builder 模式,当构造器参数过多的时候
yiaz 读书笔记,翻译于 effective java 3th 英文版,可能有些地方有错误.欢迎指正. 静态工厂方法和构造器都有一个限制:当有许多参数的时候,它们不能很好的扩展. 比如试想下如下场景 ...
- Java 静态工厂方法详解
Java 静态工厂方法详解 本文章主要是对<Effective Java>对静态工厂方法的理解 第一次使用静态工厂方法是在HIT<Software Construction>课 ...
- Java 的静态工厂方法
序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名字 2.2 第二个优势,不用每次被调用时都创建新对象 2.3 第三个优势,可以返回原返回类 ...
最新文章
- NLP实战:利用Python理解、分析和生成文本 | 赠书
- 如何备考上海市高等学校计算机一级,计算机一级考试备考攻略
- 中国出版业,九死一生
- maven 打包时缺少文件_解决Intellij Idea下使用Maven项目打包时部分文件缺失问题
- 674 Longest Continuous Increasing Subsequence(每日一题)
- 分治算法兵乓球比赛日程(java)
- Git 日常开发常用命令
- 自动挡车行驶当中,一个不小心碰到一键启动按钮,会怎样?
- MYSQL锁机制---MyISAM表锁
- tomcat官网下载详细步骤
- 五险一金 | 2020年企业社保缴费为零问题
- 【Java面试题】利用5升和6升两个水桶得到3升水
- Win10锁屏壁纸位置在哪?默认锁屏壁纸怎么提取
- 针对 Windows 和 WSUS 的 2019 SHA-2 代码签名支持要求
- 安卓音频输出采样率_安卓里LDAC的采样率问题
- JPEG图像格式及文件结构
- html给页面整体添加左右边距_css div 网页的页面边距怎么控制
- CSS(二)——Flex布局 边框 渐变 过渡 动画
- 山东省技能兴鲁职业技能竞赛-人工智能工程技术人员
- C#练习题答案: 反恐精英系列【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
热门文章
- htc816t Android go,HTC D816t(Desire D816t 移动4G)一键刷机图文教程详解
- 迁移分支_资料 | 迁移学习简明手册
- 招聘APP如何搭建信用体系以避免求职者被骗
- php实现身份证号码获取归属地地址的实列教程,含完整全国地区归属数据!
- php图片上传不现实路径指向错误,上传图片提示这个错误怎么办?
- 博图能打开s7200吗_域名掉备案了,还能打开吗?域名掉备案了怎么办?
- Web前后端笔记-vue封装http请求添加signature及后端(Java)解析并验证
- Qt工作笔记-保存textEdit中的数据,并自动打开文件
- 节约内存编程方式操作系统(全概念)
- java 多线程日志_多线程 打印的日志出现重复行