我正在学习“ 有效的Java”,书中并未建议我认为一些标准的东西,例如对象的创建,我的印象是构造函数是最好的方法,书中说我们应该利用在静态工厂方法方面,我不能说一些优点,而在缺点方面却很少,所以我在问这个问题,这是使用它的好处。
优点:
- 静态工厂方法的一个优点是,与构造函数不同,它们具有名称。
- 静态工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时都创建一个新对象。
- 静态工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的对象。
- 静态工厂方法的第四个优点是它们减少了创建参数化类型实例的冗长性。
缺点:
- 仅提供静态工厂方法的主要缺点是,没有公共或受保护的构造函数的类不能被子类化。
- 静态工厂方法的第二个缺点是它们不易与其他静态方法区分开。
参考:有效的Java,Joshua Bloch,第2版,第5-10页
我无法理解第四个优点和第二个缺点,如果有人可以解释这些观点,我将不胜感激。我还想了解如何决定使用构造函数还是静态工厂方法来创建对象。
优势4:使用构造函数时,
Foo<Map<Key, Value>> foo = new Foo<Map<Key, Value>>();
与
Foo<Map<Key, Value>> foo = Foo.createFoo(); // no need to repeat
当引入Diamond语法时,Java 7将不再具有这种优势
缺点2.您不能轻易分辨给定static
方法是用于构造函数还是用于其他对象。
至于如何选择-没有一个单一的食谱。在给定用例的情况下,您可以权衡上述所有优点和缺点,但是大多数情况下,这只是由经验决定的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句