关闭

Effective Jave——第1条: 考虑用静态工厂方法代替构造函数

标签: effectivejava学习笔记
148人阅读 评论(0) 收藏 举报
分类:
  1. 使用静态工厂来提供一个类的客户端
public static Boolean valueOf(boolean b){
    return b?Boolean.True:Boolean.False;
}
  • 静态工厂方法四大优点:
  • 它们拥有名称:命名恰当的静态工厂方法更容易使用。而使用构造器需要查看类源码,确定应该调用具有哪些参数的构造器。
    BigInteger.probablePrime(bitLength, rnd);

  • 不必在每次调用它们时创建一个新对象:调用静态工厂方法返回的很可能是一个缓存的对象,而不用重复创建新的对象,极大的削减成本。

  • 它们返回原类型任何子类型对象:通过调用静态工厂方法返回的对象的类可以是非公有的,并且可以根据方法参数不同产生不同的类的对象。(隐藏实现类)

  • 在创建参数化类型的的时候,它们使代码更见简洁。

缺点:如果我们在类中将构造函数设为private,只提供静态工厂方法来构建对象,那么我们将不能通过继承扩展该类。但这一缺点促使程序员更多使用复合而非继承。

0
0
查看评论

[Effective Java] 第1条 考虑用静态工厂方法代替构造函数

《第2章》创建和销毁对象(第1~6条)    【第1条】考虑用静态工厂方法代替构造函数   所谓静态工厂方法,实际上只是一个简单的静态方法,它返回的是类的一个实例。 使用静态工厂方法的好处: 1)它与构造函数不同,它有名字,你可以把名...
  • robby_chan
  • robby_chan
  • 2014-05-07 10:06
  • 431

第1条:考虑用静态工厂方法代替构造方法

静态工厂方法的一个好处是,与构造方法不同,静态工厂方法具有名字。 例如: BigInteger要产生一个素数,那么 public static BigInteger java.math.BigInteger.probablePrime(int bitLength, Random rnd) 比...
  • feier7501
  • feier7501
  • 2013-02-25 21:27
  • 503

第1条:考虑用静态工厂方法代替构造器

静态工厂方法与构造器相比的优点: 1.它们有名称 2.不必在每次调用它们的时候都创建一个新对象 3.它们可以返回原返回类型的任何子类型的对象 4.在创建参数化类型实例的时候,它们使代码变得更加简洁 静态工厂方法的缺点: 1.类如果不含公有的或者受保护的构造器,就不能被子类化 2.它们与其他的静态...
  • itzyjr
  • itzyjr
  • 2013-12-27 00:14
  • 1096

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

构造器是创建一个对象实例的最基本,最通用的方法。在使用某个class的时候,一般考虑的是如何创建和初始化对象的实例。我们一般考虑的方式就是通过构造函数来完成。其实还有一种方法,也应该在每个程序员的工具箱中占一席之地。类提供了一个公有的静态工厂方法,它只是一个返回类的实例的静态方法。   ...
  • qq_27291877
  • qq_27291877
  • 2015-05-20 11:09
  • 262

第1条:考虑用静态工厂方法代替构造器

在java中,一说到创建实例,自然就会想到构造器(构造函数),这是最简单也是最常用的创建实例的办法。然而,还有一种方法,那就是让类提供一个静态工厂方法 ,它只是一个返回类的实例的方法。总而言之,使用静态工厂方法的优势&劣势如下:[优势] 1.静态工厂方法有名称。 ...
  • kangkai550
  • kangkai550
  • 2015-05-17 22:18
  • 262

第1条、考虑用静态工厂方法代替构造器

1、静态工厂方法的与构造器的第一大优势:他们有名称;能够更加确切的描述正被返回的对象; 2、第二大优势在于,不必在每次调用时都创建一个新对象,对于经常请求创建相同对象,且创建对象的代价很高的情况下,可大大提升性能 3、静态工厂方法可以返回原返回类型的任何子类型的对象; 4、在创建参数化类型实例...
  • typ151172
  • typ151172
  • 2016-09-09 09:46
  • 77

《Effective Java》: 考虑用静态工厂方法代替构造函数

考虑用静态工厂方法代替构造函数类可以为它的客户提供一些静态工厂方法,来替代构造函数,或者同时也提供一些构造函数。  静态工厂方法的一个好处是,与构造函数相比,静态工厂方法具有名字,它可以使得代码更容易阅读。如果一个类看起来需要多个构造函数,并且它们的原型特征相同,那么你应该考虑用...
  • ferityCall
  • ferityCall
  • 2010-02-01 18:54
  • 474

Java中用静态工厂方法代替构造器的优缺点

Effective Java学习几笔,静态工厂方法的善用。 一般情况下,对于类而言,我们获取一个类的实例时,最常用的方法是提供一个公有的构造器。 但是还有一种方法,类可以提供一个公有的静态工厂方法,它只是个返回类的实例的静态方法而已。但是静态工厂方法却又许多妙用之处。 注意:类的静态工厂方法与设计...
  • moyu123456789
  • moyu123456789
  • 2016-09-04 00:31
  • 2261

EffectiveJava读书笔记- 第1条:考虑用静态工厂方法代替构造器

考虑静态工厂方法代替构造器 静态工厂方法相对于构造器的好处: 1. 静态工厂方法有名字,相比构造器创建的对象更语义化 最好的例子就是并发库中的Executors工具类了。 Executors中有多个创建线程池的方法: public static ExecutorService newF...
  • Holmofy
  • Holmofy
  • 2018-02-12 23:30
  • 45

[Effective Java]考虑用静态工厂方法代替构造器

本文主要介绍如何使用静态工厂方法已经在那种场合来使用这种方式代替构造方法。 众所周知,对于类而言,我们为了获得一个类的实例对象,通常情况下会提供一个公有的(public) 的构造器。当然除了这种方法以外,我们还可以通过给类提供一个public的静态工厂方法(static factor...
  • canlets
  • canlets
  • 2014-05-21 20:49
  • 1280
    个人资料
    • 访问:6790次
    • 积分:151
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论