小编Mad*_*kle的帖子

我们是否需要优先选择构造函数而不是静态工厂方法?如果是的话,何时?

我一直在阅读Joshua Bloch撰写的Effective Java,到目前为止,它确实辜负了它的声誉.第一个项目为构造函数的静态工厂方法提供了令人信服的案例.这么多,我开始质疑好老建设者的有效性:).

本书的优点/缺点总结如下:

好处:

  1. 他们有名字!
  2. 我们有全面的实例控制(单身人士,表现等)
  3. 他们可以返回子类型/接口
  4. 编译器可以提供类型推断

缺点:

  1. 私有类不能被子类化
  2. 它们不像构造函数那样在文档中脱颖而出

第一个缺点实际上可能是A Good Thing(正如书中所提到的).第二个,我认为只是一个小缺点,可以通过即将发布的java版本(javadoc的注释等)轻松解决.

看起来,最终工厂方法几乎具有构造函数的所有优点,许多优点,并没有真正的缺点!

所以,我的问题基本上分为三个部分:

  1. 默认情况下总是在构造函数上使用静态工厂方法是一种好习惯吗?
  2. 使用构造函数是否合理?
  3. 为什么面向对象的语言不能为工厂提供语言级支持?

注意:有两个类似的问题:何时使用构造函数以及何时使用getInstance()方法(静态工厂方法)?对象的创建:构造函数或静态工厂方法.然而,答案要么只是提供上面的列表,要么重申我已经知道的静态工厂方法背后的基本原理.

java constructor design-patterns factory-pattern effective-java

12
推荐指数
1
解决办法
1235
查看次数