<分区>
嵌套构造函数调用重载的 New 或 Factory 样式方法是否是个好主意(从设计 POV 来看)?这主要用于简单的构造函数,其中每个重载都建立在前一个重载的基础上。
MyClass( arg1 ) {
_arg1 = arg1;
_otherField = true;
_color="Blue"
}
MyClass( arg1, arg2) : this(arg1) {
_arg2 = arg2
}
MyClass( arg1, arg2, arg3) : this(arg1, ar2) {
_arg3 = arg3;
}
或者使用工厂方法:
static NewInstance(arg1 ) {
_arg1 = arg1;
}
static NewInstance(arg1, arg2) {
f = NewInstance(arg1);
f._arg2 = arg2;
}
//... and so on
我可以看到双方都有一些缺点
- 嵌套隐藏了构造函数正在做什么
- 不嵌套重复所有功能
那么,这样做是个好主意,还是让我为一些我认为不是问题的事情做好了准备。出于某种原因,我觉得这样做很不自在,主要是因为它划分了初始化的责任。
编辑: @Jon Skeet:我现在明白为什么这让我如此困扰。我在倒退!我写了整件事,甚至没有注意到,只是闻到了。我遇到的大多数其他案例(我写的)都按照您推荐的方式进行,但这当然不是我这样做的唯一案例。我确实注意到我做的比较复杂,但我似乎马虎了一些简单的。 我喜欢微编辑。我也喜欢缩写词!