以下是两种方法:具有所有类属性的构造函数或具有setter的默认构造函数?
- 构造与所有的类属性
优点:我必须把类型的参数,一个确切的数字,所以如果我使编译器警告我的错误(顺便说一下,有没有办法来防止在参数列表中错误地切换两个整数的问题?)
缺点:如果我有很多属性,实例化行可能变得非常长,它可能跨越两个或更多行
- setter和默认的空构造
优点:我可以清楚地看到什么我设置的,所以如果我做错了,我可以尽快找出它作为我打字它(我不能使交换同一类型的两个变量的previuos错误)缺点:具有许多属性的对象的实例可能需要几行(不知道这是否真的是一个con),并且如果我忘了设置一个属性,编译器没有说什么。
你会做什么,为什么? 你是否知道任何光线模式(考虑到它应该在每次有7+个属性被实例化的对象时使用)来建议? 我在问这个,因为我倾向于不喜欢大的构造函数,我无法快速找出变量,我正在寻找,另一方面,我发现“设置所有属性”容易丢失一些属性。
随意的说法我在利弊的假设,因为它们只属于我的想法:)
更新 - 我发现一个问题,这是关系到这一点:你已经错过了Building big, immutable objects without using constructors having long parameter lists
无论如何,建设者是不是更好的策略? – Uri 2009-05-06 17:09:08
此外,如果您的对象的状态无法在未设置属性的情况下运行,则强制用户通过构造函数设置它们。 – 2009-05-06 17:09:14
@Uri:如果你只有几个属性,生成器模式已经超过了顶级IMO。 – 2009-05-06 17:18:02