В моем текущем проекте я создавал репозиторий, где он составлен из словаря, где вы можете установить несколько объектов, называемых Foo, на уровень (простой, средний и жесткий). И.Е.Как улучшить дизайн этого репозитория?
- Уровень Easy: Foo1 объект, объект Foo2, foo3 объект
- Level Medium: Foo4 объект
- Level Hard: 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;
}
}
Затем я понял другое: мне нужно иметь уникальный идентификатор, как имя для объектов foos. И.Е. если я хочу иметь определенный объект с уровня, мне нужно установить его имя для его получения.
Теперь объекты будут выглядеть так:
- Уровень Easy: [имя: foo1, Foo1 объект], [имя: foo2, Foo2 объект], [имя: foo3, foo3 объект]
- Уровень Medium: [имя: foo4, Foo4 объект]
- Level Hard: [имя: foo5, объект foo5], [имя: foo7, Foo6 объект]
Я имею в виду, что каждое имя сопровождается уникальным именем, и я думаю, это будет лучшее, что это имя не повторится в другом.
И вот когда я начинаю сомневаться в своем первом дизайне. Мой первый, хотя был IDictionary>, или, может быть, мне следовало бы включить этот id в атрибут Foo, но я думаю, это не лучшее решение.
Что следует изменить для реализации этой новой функции?