在我当前的设计中,我创建了一个存储库,它由一个字典组成,您可以在其中将几个名为Foo的对象设置为一个级别(简单,中等和难度)。 I.E.如何改进此存储库设计?
- 级别EASY: Foo1对象和Foo2对象,Foo3对象
- 水平中等: Foo4对象
- 级硬盘: Foo5对象,Foo6对象
这是我的信息库:
public interface IFoosRepository
{
void AddFooLevel(Levels level, Foo foo);
void RemoveFooLevel(Levels level);
Foo GetProblemFoo(Levels level);
IEnumerable<Levels> GetFooLevels();
IEnumerable<Foo> GetFoos();
}
public class FoosRepository : IFoosRepository
{
private IFoosService service;
private Dictionary<Levels, Foo> _fooLevels = new Dictionary<Levels, Foo>();
public FoosRepository()
: this(new FoosService())
{
}
public FoosRepository(IFoosService service)
{
this.service = service;
// Loads data into the _fooLevels
// ...
}
public void AddFooLevel(Levels level, Foo foo)
{
_FooLevels.Add(level, foo);
}
public void RemoveFooLevel(Levels level)
{
_FooLevels.Remove(level);
}
public Foo GetProblemFoo(Levels level)
{
return _FooLevels[level];
}
public IEnumerable<Levels> GetFooLevels()
{
return _FooLevels.Keys;
}
public IEnumerable<Foo> GetFoos()
{
return _FooLevels.Values;
}
}
然后,我意识到另一件事,我需要一个uniqueId像foos对象的名称。 I.E.如果我想从一个关卡中获取特定的对象,我需要设置名称来获取它。
现在的对象会是这样:
- 级别EASY: [名称:foo1,Foo1对象],[名字:foo2的和Foo2对象],[名字:foo3,Foo3对象]
- 等级介质: [名:foo4,Foo4对象]
- 等级硬: [名:foo5,Foo5对象],[名称:foo7,Foo6对象]
我的意思是,每个名字都伴随着一个独特的名字,我想这将是最好的,这个名字不会在另一个更多的重复。
这是当我开始怀疑我的第一个设计。我的第一个虽然是IDictionary>,或者我应该不得不包括这个ID到Foo属性,但我想这不是最好的解决方案。
我应该修改什么来实现这个新功能?