1

假设我有两种类型:

ClassA
{
    int ValueA;
    int CalculatedA;
}

ClassB
{
    int ValueA;
    int CalculatedA;

    int ValueB;
    int CalculatedB;
}

CalculatedB需要ValueA以及ValueB. 我正在尝试确定实现这一点的最佳模式。

选项 1:子类ClassA化并添加额外的值。有一个Update()在子类中被覆盖的通用方法。这是模型中的简单代码,但是创建这些类的代码需要提前知道要创建哪些类,并且任何遍历这些类型列表的代码都需要进行类型检查以处理额外的字段。

选项 2:在单独的类中拥有额外的属性,并在CalculatedB那里拥有更新代码。这个问题是ClassB需要某种方式知道何时ValueA更新,我希望不必INotifyPropertyChanged在这些类上实现类似的东西。另一种方法是在额外的属性类上使用某种公共更新方法,并让主类在ValueA更新时调用该方法。也不可取。

选项 3:只有ClassBwithValueBCalculatedBbeing 可以为空的类型。经过。

还有吗?你会选择哪个?

4

1 回答 1

1

如果 ClassB 与 ClassA 无关,那么子类化不是一个好方法。顺便说一句,在 .Net 中,我们通常不公开公共字段,而是公开属性(假设 C#)

public class ClassA{
    public int ValueA {get;set;}
    //...
}

由于 ClassB.CalculateB 严重依赖 ValueA,为什么不直接计算值,所以您不必担心属性更改。

public class ClassB {
    public int ValueB {get;set;}
    public int getCalculateB(ClassA a){
        //...
    }
}
于 2011-02-09T03:43:14.503 回答