在两者都可用的语言中,您更愿意看到实例构造函数还是返回实例的静态方法?
例如,如果您要创建一个String
from a char[]
:
String.FromCharacters(chars);
new String(chars);
In 有效的 Java,第二版 https://rads.stackoverflow.com/amzn/click/com/0321356683,约书亚·布洛赫当然推荐前者。有几个原因我记得,当然还有一些我不记得:
- 您可以为该方法指定一个有意义的名称。如果您有两种构造实例的方法,这两种方法都采用 int,但该 int 具有不同的含义,那么使用普通方法会使调用代码更具可读性。
- 第一个的推论 - 您可以使用具有相同参数列表的不同工厂方法
- 对于“可能预期失败”的情况,您可以返回 null,而构造函数将always返回值或抛出异常
- 您可以返回声明之外的类型(例如返回派生类)
- 您可以将其用作工厂,有可能多次返回对同一对象的引用
缺点:
- 目前,这并不是惯用语——开发人员更习惯于看到“新”
- 如果你看到“新”的你know你得到一个新的实例(模我最近提到的奇怪现象 https://stackoverflow.com/questions/194484/whats-the-strangest-corner-case-youve-seen-in-c-or-net)
- 您需要为子类提供适当的构造函数
- 在 C# 3 中,构造函数调用能够使用对象初始值设定项表达式以紧凑的方式设置字段/属性;该功能不适用于静态方法调用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)