【发布时间】:2012-10-01 02:53:55
【问题描述】:
我有两个选择。要么创建一个在其构造函数中接受许多参数的类,要么创建许多 setter 方法和一个 init 方法。我不确定哪个是首选选项,是否应该在构造函数中接受某些参数,而其他参数可以通过 setter 手动设置?还是我想多了?
这是一个相关的问题,也是我提出的:Conflicts between member names and constructor argument names。
【问题讨论】:
-
您对某些值有合理的默认值吗?
-
" 要么创建一个在其构造函数中接受许多参数的类,要么创建许多 setter 方法和一个 init 方法。" -- 错误的困境。通常,第一个选项更好。但是如果可能的话,重新设计第三个选项,使您的构造函数具有更少的参数并且不需要设置器或初始化函数。
-
@Bane:越来越多的我发现自己根本没有提供 setter,至少对于只有几个字段的对象。如果您想要给定字段的不同值,则只需使用这些值创建一个新对象。虽然在 3 或 4 个字段之后它并不是真正易于管理......但这只会让我的对象更小:D
-
你应该重新设计你的班级,一个班级/一份工作的负责人通常会帮助你做到这一点。当然,您也可以将这些参数封装在包装器中。