OOP对象构造函数参数

时间:2011-08-17 13:48:27

标签: parameters constructor

什么时候应该将参数传递给对象的构造函数?您使用哪个标准将它们传递给构造函数而不是对象方法中的参数?

4 个答案:

答案 0 :(得分:3)

将构造函数传递给对象的不可变属性。如果可能,使所有对象属性不可变。尽管如此,这使得整个对象都是不可变的。

在构造时分配的不可变属性可以避免各种竞争条件(特别是在多线程环境中),并有助于确保对象始终保持一致,从而消除了出现多种错误的可能性。通过强制在构造中定义属性,可以避免广泛的错误检查代码。一旦整个对象可以不变,就有机会共享等效对象,从而提高内存性能。

如果参数不是对象的不可变属性,那么在构造函数中分配它只是一种方便。通常,应该为其分配一个setter以降低代码复杂性(因为无论如何都需要setter)。如果经常调用构造函数,那么参数的便利性可能值得这种额外的复杂性。

答案 1 :(得分:1)

当我的对象非常简单(1或2个属性)时,我可以提供带有这些参数的构造函数。

但大部分时间,默认构造函数和我使用setter设置我的属性。

答案 2 :(得分:0)

通常在使用new关键字实例化类时将参数传递给类构造函数(这可能因语言而异)。

例如(在这里选择C / Java / C#样式)

MyClass class = new MyClass(arg1, arg2, arg3);

在重新阅读你的问题时,我倾向于使用构造函数参数来获得绝对必需的资源。这样,您就知道您的对象必须具有某些可用的属性或资源。

答案 3 :(得分:0)

基本上你想要在constrctor中初始化对象的所有基本构建块。 但有时,该对象包含许多元素,因此使构造函数的参数列表太长。 我遵循这个准则:如果构造函数的参数列表更多是5个元素, 新对象的初始化分为构造函数参数和&设定方法。