使用属性较少的大型业务对象

时间:2018-12-27 13:16:49

标签: c#

我有一个大型的Business Objects,比如说拥有50个属性。现在,对于一种方法,我只需要5-10个属性。因此,在该方法中使用相同的大对象还是创建具有较少属性的新BO是一个好主意。

1 个答案:

答案 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。这增强了该方法的可重用性。