`
robindut
  • 浏览: 45231 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

1.考虑用静态工厂方法代替构造器

 
阅读更多

1.考虑用静态工厂方法代替构造器

 

   例子:

 

public static Boolean valueOf(boolean b){
    return b ? Boolean.TRUE : Boolean.FALSE;
}

 使用静态工厂替代构造器的优势:

1)他们有名称

2)不必每次调用都产生新的对象

  3)可以返回原返回类型任何子类型的对象

4)创建参数化类型实例的时候,使代码更简洁

缺点:1)类如果不含公有的或者受保护的构造器,就不能被子类化

 2)与其他的静态方法没有任何区别:API中没有特殊标明,因此很难查找如何实例化一个类。

 

静态工厂方法的惯用名称

*valueOf--该方法返回的实例与它的参数具有相同的价值。这样的静态工厂方法实际上是类型转换方法。

*of--valueOf的一种更为简洁的替代

*getInstance--返回的实例是通过方法的参数来描述的,但是不能说具有与参数同样的值。对于singeton来说,该方法     没有参数,并返回唯一实例

*newInstance--像getInstance一样,但newInstance能确保返回的每个实例都与其他实例不同

*getType--像getInstance一样,但是在工厂方法处于在不同的类中时使用。Type表示工厂方法所返回的对象类型

*newType--像newInstance一样,但是在工厂方法处于在不同的类中时使用。Type表示工厂方法所返回的对象类型

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics