顾名思义,易于阅读。
这使得不可变类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用,从而避免创建不必要的重复对象。
这样我们在选择返回对象的类时就有了更大的灵活性。
Map<String,String> m = new HashMap<String,<String>(); 假设HashMap提供了这个静态工厂: public static <K,V> HashMap<K,V> newInstance(){ return new HashMap<K,V>(); } 就可以用下面这句简介的代码代替上面这段繁琐的声音: Map<String,String> m = HashMap.newInstance();
遵守标准命名习惯,可以弥补这一劣势。
valueof
不太严格得讲,该方法返回的实例与它的参数具有相同的值。这样的静态工厂方法实际上是类型转换方法。
of
valueOf的一种更为简洁的替代。
getInstance
返回的实例是通过方法的参数来描述的,但是不能能够说与参数具有相同的值。对于Singleton来说,该方法没有参数,并返回唯一的实例。
newInstance
像getInstance一样,但newInstance能够确保返回的每个实例都与所有其他实例不同。
getType
像getInstance一样,但是在工厂方法处于不同的类中的时候使用,Type表示工厂方法所返回的对象类型。
newType
像newInstance一样,但是在工厂方法处于不同的类中的时候使用,Type表示工厂方法所返回的对象类型。