在设计中,为重载的New或工厂方法嵌套构造函数调用是否是一个好主意?这主要适用于简单的构造函数,每个重载都基于前一个构造函数。
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: 我现在明白为什么这件事情困扰着我。我刚开始做反了!我把整个东西写完了,甚至没注意到,只是感觉有些怪怪的。我写的大多数其他案例都按照您建议的方式进行处理,但这显然不是我所做的唯一一种。我注意到我处理更复杂的案例时都做得很好,但在简单的案例中却似乎变得有些松懈。 我喜欢微小的修改。我也喜欢首字母缩写词!