您的位置:首页 > 其它

[EJ读书笔记]第1条:考虑用静态工厂方法替代构造器

2015-09-19 17:12 260 查看
优点

1、有名称可以通过方法名自注释

2、可复用这个讲一个例子,单例

3、返回值协变可以让这个返回更优雅从容(协变是指你可以返回应该返回的类型的子类,输入的参数同理)

4、更简洁利用静态工厂方法隐藏了二次提供参数,如下:

Map<String, List<String>> m = new ConcurrentHashMap<String, List<String>>();

可以写成这样:

Map<String, List<String>> m = ConcurrentHashMap.newConcurrentHashMapInstance();
public static <K, V> ConcurrentHashMap<K, V> newConcurrentHashMapInstance() {
return new ConcurrentHashMap<K, V>();
}


缺点

a、不能被子类化 就是说你这个实现了很多静态方法的类,如果是私有的就不能被子类化,感觉这是废话?大部分静态方法的工厂类都是私有的构造函数。

b、不明显 静态工厂方法和其他静态方法实际上没有任何区别,在API文档中也没有特别标出。

valueOf

of

getInstance

newInstance

getType

newType
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: