在.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] 删除。
我来说两句