首页 > 技术文章 > 1、静态工厂方法代替构造器--effective java

rookie111 2018-09-28 17:25 原文

a.优点

 1.有方法名,更容易同过方法名描述得到的实例是什么类型,或者功能

 2.不必在每次调用的时候都创建一个新对象。

 3.可以返回任意原返回类型的任意子类型。静态工厂方法返回的对象所属的类,在编写静态方法所属的类时可以不必存在(effective java),是构成 服务提供者框架 的基础。

b.缺点

 1.类如果不包含共有的或者受保护的构造器,就不能被子类化。

 2.与静态方法实际上没有任何区别。一般会有惯用的名称

   valueOf:返回值和参数具有相同的值,实际上是类型转换方法。

  of:valueOf的一种更简洁的替代。

  getInstence:返回的类型同过参数来描述。对于Sington来说,方法没有参数,并且返回唯一的实例。

  newInstence:与getInstence一样,但是保证返回的每一个实例都与其他实例不同。

 

推荐阅读