我有一个大型的Business Objects,比如说拥有50个属性。现在,对于一种方法,我只需要5-10个属性。因此,在该方法中使用相同的大对象还是创建具有较少属性的新BO是一个好主意。
答案 0 :(得分:3)
我认为您的BO是一个类(而不是一个结构)。然后,该方法获得的是对该BO的单个引用,而不是所有属性的副本
void Method(BO bo)
{
// Here bo is a reference to the passed business object.
// No properties have been copied.
}
因此,使用具有许多属性的大型Business Objects调用该方法不是问题。
另一方面是概念上的。 Interface segregation principle (ISP)指出,不应强迫任何客户端依赖于它不使用的方法(并且属性是一对getter和setter方法)。因此,您可以通过不同的界面来制定BO的不同方面。假设此方法要打印地址。该地址仅属于少数几个属性。
public class CustomerBO : IAddress
{
#region IAddress members
public string Street { get; set; }
public string City { get; set; }
public string Zip { get; set; }
#endregion
// ... lots of other properties here
}
方法
void PrintAddress(IAddress address)
{
// This method does not need to know other proeprties.
}
优点是其他对象可以像供应商一样实现IAddress
。这增强了该方法的可重用性。