静态构造方法与构造函数

服务劳里森

在.NET框架中,我经常看到这样的成语:用静态函数代替构造函数以从中构造新对象。

例如,对于BigInteger,没有构造函数采用字符串,因此这是不可能的:

BigInteger i = new BigInteger("1000000103453543897");

但是有一个静态的Parse函数。

BigInteger i = BigInteger.Parse("1000000103453543897");

为什么经常选择这样的班级设计?

我唯一能想到的就是少创建一个对象,然后将其丢弃。确实这是主要原因吗?还是还有其他原因?

BigInteger(string value)
{
  BigInteger result = new BigInteger(); // this one just returned in a Parse function

  // compute bigint

  // copy result to this
  data = new uint[maxLength];
  for (int i = 0; i < result.Length; i++)
    data[i] = result.data[i];

  Length = result.dataLength;  
}
莫霍

可能有许多原因-研究Factory方法模式

以您的示例为例-许多人认为在构造函数中传入/调用大量逻辑是一种不好的做法(我不想从构造函数中引发异常,除非它是缺少的参数)。使用工厂方法可确保实现在对象构造中运行,但不能在构造函数中运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Dart命名构造函数,静态方法和工厂构造函数

来自分类Dev

静态工厂方法与公共构造函数

来自分类Dev

静态构造函数和扩展方法

来自分类Dev

类构造函数或静态对象返回方法?

来自分类Dev

静态构造函数的奇怪行为

来自分类Dev

静态工厂劣于构造函数

来自分类Dev

静态构造函数多次调用

来自分类Dev

C ++静态工厂构造函数

来自分类Dev

静态导入和构造函数

来自分类Dev

静态构造函数和继承

来自分类Dev

试图了解静态构造函数

来自分类Dev

Dart中的静态构造函数

来自分类Dev

C ++静态工厂构造函数

来自分类Dev

静态构造函数未调用

来自分类Dev

Dart工厂(构造函数)与静态方法;例如,为什么int.parse()不是工厂构造函数?

来自分类Dev

执行从 Javascript 中的构造函数数组访问的构造函数的父级的“静态”方法

来自分类Dev

构造函数调用的方法应该是静态的吗?

来自分类Dev

Scala / Spark中的静态方法和构造函数拦截模拟

来自分类Dev

具有静态工厂方法或构造函数的工厂模式

来自分类Dev

如何从父类构造函数引用重写的静态方法?

来自分类Dev

Dart命名构造函数vs静态方法首选什么?

来自分类Dev

带有静态方法的Typescript通用类构造函数参数

来自分类Dev

构造函数调用的方法应该是静态的吗?

来自分类Dev

Scala / Spark中的静态方法和构造函数拦截模拟

来自分类Dev

如何从父类构造函数引用重写的静态方法?

来自分类Dev

Observable 的构造函数和静态方法(of、from、...)不可用

来自分类Dev

静态构造函数以某种方式阻止实例构造函数

来自分类Dev

设置方法或构造函数

来自分类Dev

静态方法(主)如何能够抓住非静态方法(构造函数)并执行它?

Related 相关文章

  1. 1

    Dart命名构造函数,静态方法和工厂构造函数

  2. 2

    静态工厂方法与公共构造函数

  3. 3

    静态构造函数和扩展方法

  4. 4

    类构造函数或静态对象返回方法?

  5. 5

    静态构造函数的奇怪行为

  6. 6

    静态工厂劣于构造函数

  7. 7

    静态构造函数多次调用

  8. 8

    C ++静态工厂构造函数

  9. 9

    静态导入和构造函数

  10. 10

    静态构造函数和继承

  11. 11

    试图了解静态构造函数

  12. 12

    Dart中的静态构造函数

  13. 13

    C ++静态工厂构造函数

  14. 14

    静态构造函数未调用

  15. 15

    Dart工厂(构造函数)与静态方法;例如,为什么int.parse()不是工厂构造函数?

  16. 16

    执行从 Javascript 中的构造函数数组访问的构造函数的父级的“静态”方法

  17. 17

    构造函数调用的方法应该是静态的吗?

  18. 18

    Scala / Spark中的静态方法和构造函数拦截模拟

  19. 19

    具有静态工厂方法或构造函数的工厂模式

  20. 20

    如何从父类构造函数引用重写的静态方法?

  21. 21

    Dart命名构造函数vs静态方法首选什么?

  22. 22

    带有静态方法的Typescript通用类构造函数参数

  23. 23

    构造函数调用的方法应该是静态的吗?

  24. 24

    Scala / Spark中的静态方法和构造函数拦截模拟

  25. 25

    如何从父类构造函数引用重写的静态方法?

  26. 26

    Observable 的构造函数和静态方法(of、from、...)不可用

  27. 27

    静态构造函数以某种方式阻止实例构造函数

  28. 28

    设置方法或构造函数

  29. 29

    静态方法(主)如何能够抓住非静态方法(构造函数)并执行它?

热门标签

归档