1

2つのタイプがあるとします:

ClassA
{
    int ValueA;
    int CalculatedA;
}

ClassB
{
    int ValueA;
    int CalculatedA;

    int ValueB;
    int CalculatedB;
}

CalculatedBValueAと同様に必要ValueBです。これを実装するための最良のパターンを決定しようとしています。

オプション 1:サブクラスClassA化し、余分な値を追加します。Update()サブクラスでオーバーライドされる共通メソッドがあります。これはモデル内の単純なコードですが、これらのクラスを作成するコードは、作成するクラスを事前に知る必要があり、これらの型のリストを反復処理するコードは、余分なフィールドを処理するために型チェックを行う必要があります。

オプション 2:追加のプロパティを別のクラスに配置し、CalculatedBそこに更新コードを配置します。これに関する問題は、ClassBいつ更新されるかを知る何らかの方法が必要であり、これらのクラスのValueAようなものを実装する必要がないことを望んでいました. INotifyPropertyChangedこれを行うもう 1 つの方法は、追加のプロパティ クラスにある種のパブリック Update メソッドを用意し、メイン クラスValueAが更新時にそのメソッドを呼び出すようにすることです。また、望ましくありません。

オプション 3: null 許容型ClassBを使用するValueBだけです。CalculatedB合格。

もうありますか?あなたならどちらを選びますか?

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 に答える