a.优点
1.有方法名,更容易同过方法名描述得到的实例是什么类型,或者功能
2.不必在每次调用的时候都创建一个新对象。
3.可以返回任意原返回类型的任意子类型。静态工厂方法返回的对象所属的类,在编写静态方法所属的类时可以不必存在(effective java),是构成 服务提供者框架 的基础。
b.缺点
1.类如果不包含共有的或者受保护的构造器,就不能被子类化。
2.与静态方法实际上没有任何区别。一般会有惯用的名称
valueOf:返回值和参数具有相同的值,实际上是类型转换方法。
of:valueOf的一种更简洁的替代。
getInstence:返回的类型同过参数来描述。对于Sington来说,方法没有参数,并且返回唯一的实例。
newInstence:与getInstence一样,但是保证返回的每一个实例都与其他实例不同。