2013-02-03 47 views
2

在面向对象的设计中,以下哪项更好?面向对象设计:使用方法参数vs属性

与方法等发送参数:

obj.InsertRecord("raed","1987") 

或使用类似的属性:

obj.name= "raed" 
obj.year= "1987" 
obj.InsertRecord() 
+1

问题是哪个更适合这种情况。前者因为只有一个属性被设置,但后者都是非空字段,后者可能会失败。 –

+1

如果这些是属性,它们应该遵循[C#命名约定](http://msdn.microsoft.com/en-us/library/x2dbyw72(v = vs.71).aspx) –

回答

7

如果您发送的参数,你必须每次改变InsertRecord()签名obj的类签名更改(例如,如果你添加一个description属性) ,因为你会想保存这些新的属性。

此外,对象本身不应该为保存自己而烦恼。这不是对象的责任。所以,像这样的事情是最有前途的:

ObjectStorage.InsertRecord(obj); 
1

面向对象程序设计,这是优选的:obj.InsertRecord("raed", "1987");

面向组件编程,后者是优选的: 是这样的:

obj.name = "raed"; 
obj.year = "1987"; 
obj.InsertRecord(); 

顺便说一句,这是属于programmers.stackexchange