Dans ma conception actuelle, je créais un référentiel où, il est composé par un dictionnaire, où vous pouvez définir plusieurs objets appelés Foo dans un niveau (facile, moyen et difficile). C'EST À DIRE.Comment améliorer la conception de ce référentiel?
- Niveau facile: objet Foo1, objet foo2, objet foo3
- Niveau moyen: Foo4 objet
- Niveau dur: objet Foo5, objet Foo6
Et ce est mon référentiel:
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;
}
}
Ensuite, j'ai réalisé une autre chose, j'ai besoin d'avoir un ID unique comme un nom pour les objets foos. C'EST À DIRE. si je veux avoir un objet spécifique d'un niveau, j'ai besoin de définir le nom pour l'obtenir.
Maintenant, les objets seraient comme ceci:
- Niveau facile: [nom: foo1, objet Foo1], [nom: foo2, objet foo2], [nom: foo3, objet foo3]
- Niveau moyen: [nom: foo4, objet foo4]
- Niveau dur: [nom: foo5, objet Foo5], [nom: foo7, objet Foo6]
Je veux dire, chaque nom est accompagné d'un nom unique et je suppose que ce sera le meilleur que ce nom ne soit pas répété dans un autre plus.
Et voilà quand je commence à douter de mon premier design. Mon premier était IDictionary>, ou peut-être que je devrais inclure cet identifiant dans l'attribut Foo, mais je suppose que ce n'est pas la meilleure solution.
Que dois-je modifier pour implémenter cette nouvelle fonctionnalité?