第1条:考虑用静态工厂方法代替构造器
2017-03-13 13:42
225 查看
第1条:考虑使用静态工厂方法代替构造器
Boolean类中的静态工厂方法public static Boole valueOf(boolean b){ return b ? Boolean.TRUE : Boolen.FALSE; }
优点
静态工厂方法可以自由的使用名称,可阅读性更高,使用时更为直观。而构造函数中不同构造器只能通过不同的参数来进行区分,容易造成混淆。不需要在每一次调用时都创建一个新的对象,更适合单例模式使用。
返回类型上更为自由,可以返回任何原类型的子类型的对象。
在使用泛型创造实例时,代码可以变得更加简洁。
未使用静态构造方法时,需要填写两次类型参数:
Map<String, List<String>> m = new HashMap<String, List<String>>();
但如果HashMap中提供了这个静态工厂:
public static <K, V> HashMap<K, > newInstance(){ return new HashMap<K, V>(); }
就可以只填写一次类型参数来创建对象:
Map<String, List<String>> m = HashMap.newInstance();
缺点
如果不含有public或protect的构造器就不能直接使用构造函数进行实例化。静态工厂方法与其它的静态方法本质上没有区别,如果希望通过API文档查找静态工厂方法是比较困难的。
相关文章推荐
- 第1条:考虑用静态工厂方法代替构造器(第一章:创建和销毁对象)
- 第1条、考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- 第1条 创建和销毁对象——考虑用静态工厂方法代替构造器
- 第1条 考虑用静态工厂方法代替构造器
- 《Effective java》读书记录-第1条-考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- EffectiveJava读书笔记- 第1条:考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- Effective Java学习笔记之第1条 考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- Effective Java 中文版之学习 第1条:考虑用静态工厂方法代替构造器
- 第1条 考虑用静态工厂方法代替构造器
- Effective Java 中文版之学习 第1条:考虑用静态工厂方法代替构造器
- 【Effective Java笔记】第1条:考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- 第1条:考虑用静态工厂方法代替构造器
- EJ.01 考虑用静态工厂方法代替构造器