- 静态工厂方法定义:
返回类实例的静态方法,与设计模式中的工厂方法模式不同。 - 优点:
- 静态工厂方法有名称。我们可以通过不同的名称来区分参数列表不同的构造器,这样显然更加的清楚,便于用户理解。
- 不必在每次调用时创建一个新的对象。重复利用对象,避免重复创建相同的对象,提升性能。
- 可以返回类型的任何子类型的对象。我们在选择返回对象的类型时,有了更大的灵活性。适用于基于接口的的框架。
-
使代码变得更加简介。如:
<code>Map<String,List<String>> m=new HashMap<String,List<String>>();
//可更换为
Map<String,List<String>> m=HashMap.newInstance();</code>
- 缺点:
1.** 一个类如果不含有public或者protect的构造器,就不能被子类继承。**
2.静态工厂方法与普通静态方法没有任何区别,在API文档中不会被明确标识出来。所以在查询使用静态工厂方法创建实例对象时,会十分困难。 - 静态工厂方法的管用名称:
- ValueOf——类型转换方法,返回与参数具有相同值的实例。
- of——同上
- getInstance——返回通过参数描述的实例,对Singleton来说,永远返回唯一的实例。
- newInstance——确保返回的每个实例都与其他实例不同
- getType——像getInstance一样,但是在工厂方法处于不同的类中的时候使用。
- newType——像newInstance一样,但是在工厂方法处于不同的类中的时候使用。