我有一个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的属性添加/删除,修改列表。 这是一个糟糕的设计吗? 感觉对我很好;但是,既然我之前没有看过这样的实现,我只是想知道这是不是很糟糕,如果是这样,为什么呢?
修改
假设强制执行唯一字符串(但在更高级别)并且IObjModel具有复合性质(在更高级别组成)。另外,请注意添加Serializable属性 - 我最初忘记了这一点。
该类基本上保存了各个集合的元素。用户无法访问此类。它是一个内部存储对象。
答案 0 :(得分:1)
这可以作为对象组合,但不应该从Dictionary继承。它的目的是什么?如果您希望用户使用键搜索此对象,它将从3个列表中的哪一个返回?如果键或对象是对记录类型的自描述,为什么要将它们存储在不同的列表中?
ObjectBatch[key] <-- get from A or B or C?
Add(IobjectModel) <-- will add to which list?