gpt4 book ai didi

design-patterns - 静态工厂方法与实例(普通)构造函数?

转载 作者:行者123 更新时间:2023-12-03 06:12:17 25 4
gpt4 key购买 nike

在两者都可用的语言中,您更愿意看到实例构造函数还是返回实例的静态方法?

例如,如果您要从 char[] 创建一个 String:

  1. String.FromCharacters(chars);

  2. new String(chars);

最佳答案

Effective Java, 2nd edition ,约书亚·布洛赫当然推荐前者。有几个原因我记得,当然还有一些我不记得:

  • 您可以为该方法指定一个有意义的名称。如果您有两种构造实例的方法,这两种方法都采用 int,但该 int 具有不同的含义,那么使用普通方法会使调用代码更具可读性。
  • 第一个推论 - 您可以使用具有相同参数列表的不同工厂方法
  • 对于“可能预期失败”的情况,您可以返回 null,而构造函数总是要么返回一个值,要么抛出异常
  • 您可以返回声明之外的类型(例如返回派生类)
  • 您可以将其用作工厂,有可能多次返回对同一对象的引用

缺点:

  • 目前这并不是惯用语 - 开发者更习惯于看到"new"
  • 如果您看到“new”,您知道您正在获得一个新实例(以 oddity I mentioned recently 为模)
  • 您需要为子类提供适当的构造函数
  • 在 C# 3 中,构造函数调用能够使用对象初始值设定项表达式以紧凑的方式设置字段/属性;该功能不适用于静态方法调用

关于design-patterns - 静态工厂方法与实例(普通)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com