创建和销毁对象
第1条 考虑用静态工厂方法代替构造器
- 静态工厂方法有名称,能确切地描述正被返回的对象。
- 不必每次调用都创建一个新的对象。
- 可以返回原返回类型的任何子类对象。
- 创建参数化类型实例时更加简洁,比如调用构造 HashMap 时,使用
Map < String,List < String > m = HashMap.newInstance()
,与 Map < String,List < String > m > = new HashMap < String,List < String > >()
;
实践
JDK
源码提供了静态方法:Collections.emptyList();
(注意返回的List不是java.util.ArrayList而是java.util.Collections.EmptyList内部类)
google
的guava
包中提供了Maps.newHashMap()
和Lists.newArrayList()
静态方法创建对象(返回的是java.util.ArrayList#ArrayList()和java.util.HashMap#HashMap())
参考:
《Effective Java》——读后总结