博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective Java记录1:考虑用静态工厂方法代替构造器
阅读量:4029 次
发布时间:2019-05-24

本文共 1063 字,大约阅读时间需要 3 分钟。

静态工厂方法与构造器不同之处在于

1.它们有名称

2.不必在每次调用时,创建新对象

3.多态性,可以返回原类型,或者其子类型

代码说明

// 服务接口	public interface Service {		// 特定方法	}	// 服务提供者	public interface Provider {		Service newService();	}	// 注册服务	public  class Services {		private Services() {		} // 构造器私有,不被实例化		// 名称-服务的Map		private static final Map
providers = new ConcurrentHashMap
(); public static final String DEFAULT_PROVIDER_NAME = "
"; // 注册api public static void registerDefaultProvider(Provider p) { registerProvider(DEFAULT_PROVIDER_NAME, p); } 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("没有提供注册器: " + name); } return p.newService(); } }
4.创建参数化实例,静态工厂方法代码更简洁

静态工厂方法的缺点

1.如果没有提供public或者protected构造器,不能被实例化

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

结语

视情况或者应用环境而运用。

PS:这是Effective Java 的学习记录系列

转载地址:http://drlbi.baihongyu.com/

你可能感兴趣的文章
Windows 7 下安装sqlite数据库
查看>>
sqlite中一些常用的命令及解释
查看>>
数据库SQL优化大总结之 百万级数据库优化方案
查看>>
Windows下安装MySQL解压缩版
查看>>
企业级监控管理平台建设密谈
查看>>
新基建
查看>>
Google SRE Four Golden Signals
查看>>
统一智能运维管理平台
查看>>
任正非告别荣耀讲话—-陌生的感动
查看>>
什么是POC
查看>>
标记一下
查看>>
一个ahk小函数, 实现版本号的比较
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习笔记4——猜数字游戏,随机数
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
学习设计模式(5)——装饰器模式
查看>>
学习设计模式(6)——建造者模式
查看>>