0

次のようなクラスObjectBatchがあります。

[Serializable]    
class ObjectBatch : IDictionary<string, IObjModel>
    {
        List<Tuple<string, IObjModel>> ModelATypes;
        List<Tuple<string, IObjModel>> ModelBTypes;
        List<Tuple<string, IObjModel>> ModelCTypes;

        /* IDictionary implementations follow */
    }

このクラスは、IObjModelのプロパティに基づいてリストを追加/削除、変更する責任を単独で負います。これは悪いデザインですか?それは私に元気です。しかし、私はこれまでこのような実装を見たことがないので、これが悪いのかどうか疑問に思っていました。もしそうなら、なぜですか?

編集
一意の文字列が適用され(ただし、より高いレベルで)、IObjModelsが複合的な性質(より高いレベルで構成される)であると想定します。また、Serializable属性が追加されていることに注意してください。最初はこれを忘れていました。

このクラスは基本的に、個々のコレクションの要素を保存します。このクラスには、ユーザーはアクセスできません。これは内部ストレージオブジェクトです。

4

1 に答える 1

1

これはオブジェクトコンポジションとしては問題ありませんが、Dictionaryから継承しないでください。それの目的は何ですか?ユーザーがキーを使用してこのオブジェクトを検索するようにするには、3つのリストのどれから返されますか?キーまたはオブジェクトがレコードのタイプを自己記述的である場合、なぜそれらを別のリストに保存するのですか?

ObjectBatch[key] <-- get from A or B or C?
Add(IobjectModel) <-- will add to which list?
于 2011-08-16T17:01:46.713 に答える