mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2025-03-19 22:00:52 +08:00
Update 01. 考虑使用静态工厂方法替代构造方法.md
This commit is contained in:
parent
ffbb1daaa9
commit
2c5acf7a3f
@ -14,7 +14,7 @@ public static Boolean valueOf(boolean b) {
|
||||
|
||||
类可以为其客户端提供静态工厂方法,而不是公共构造方法。提供静态工厂方法而不是公共构造方法有优点也有缺点。
|
||||
|
||||
**静态工厂方法的一个优点是,不像构造方法,它们是有名字的。** 如果构造方法的参数本身并不描述被返回的对象,则具有精心选择名称的静态工厂更易于使用,并且生成的客户端代码更易于阅读。 例如,返回一个可能为素数的 `BigInteger` 的构造方法 `BigInteger(int,int,Random)` 可以更好地表示为名为 `BigInteger.probablePrime` 的静态工厂方法。 (这个方法是在 Java 1.4 中添加的。)
|
||||
**静态工厂方法的一个优点是,不像构造方法,它们是有名字的。** 如果构造方法的参数本身并不描述被返回的对象,则具有精心选择名称的静态工厂更易于使用,并且生成的客户端代码更易于阅读。 例如,返回一个可能为素数的 `BigInteger` 的构造方法 `BigInteger(int,int,Random)` 可以更好地表示为名为 `BigInteger.probablePrime` 的静态工厂方法。 (这个方法是在 Java 1.4 中添加的。)
|
||||
|
||||
|
||||
一个类只能有一个给定签名的构造方法。 程序员知道通过提供两个构造方法来解决这个限制,这两个构造方法的参数列表只有它们的参数类型的顺序不同。 这是一个非常糟糕的主意。 这样的 API 用户将永远不会记得哪个构造方法是哪个,最终会错误地调用。 阅读使用这些构造方法的代码的人只有在参考类文档的情况下才知道代码的作用。
|
||||
|
Loading…
Reference in New Issue
Block a user