【问题标题】:Static Factory Methods getType & newType examples静态工厂方法 getType 和 newType 示例
【发布时间】:2017-01-06 03:22:19
【问题描述】:
在 Effective Java 的第 1 项中,在本节关于静态工厂方法的结尾处,Joshua Bloch 描述了静态工厂方法的常用名称。其中两个名称 getType 和 newType 让我有点困惑。
引用 [Bloch, p. 10]
getType - 与 getInstance 类似,但在工厂方法位于不同类中时使用。 Type 表示工厂方法返回的对象的类型。
newType - 与 newInstance 类似,但在工厂方法位于不同类中时使用。 Type 表示工厂方法返回的对象的类型。
在不同的类中拥有静态工厂方法的用例是什么?是否有在 Java API 中使用此模式的示例?
【问题讨论】:
标签:
java
static-methods
effective-java
【解决方案1】:
在不同的类中拥有静态工厂方法的用例是什么?
用例很简单……当您在不同的类中拥有静态工厂方法时。可以想象,您的代码可以以一种更合适的方式组织。没有真正的“最佳”用例,这在很大程度上取决于您的情况、要求和风格。
getType() 和 newType() 不是字面意思;它们旨在指示命名约定,如 Something.newWidget() 或其他。
Java API 中的一个例子是,例如Channels,在同一个类中组织多个相关的工厂方法是有意义的。从语义上讲,名为 Channels.newInstance() 的方法并没有多大意义,因为它不会实例化新的 Channels。
另一个例子是常用的Executors。
通过浏览the 'n' section of the documentation index 可以找到 API 中的更多示例(查找“new*”)。
这些东西都不是真正的硬性和快速的具体规则,只是一般的指导方针和选项。 您需要做的就是确保您的代码清晰、简洁、可维护和灵活。因此,您在设计和编写软件时会做出决定。