Je les classes de suivi (C# par exemple)Design Pattern pour objet unique par système d'identification
class A
{
private static Dictionary<int, A> idLookup;
....
private A(id) {...}
public static A Get(id)
{
//does some magic
if (...) { return idLookup[id]; }
else { A a = new A(id); idLookup[a.id] = a; return a; }
}
}
class B
{
private static Dictionary<int, B> idLookup;
....
private B(id) {...}
public static B Get(id)
{
//does some magic
if (...) { return idLookup[id]; }
else { B b = new B(id); idLookup[b.id] = b; return b; }
}
}
... and so on
Y at-il un modèle de conception (faisait l'héritage, mais qui a été un peu en désordre) qui peut supprimer tout ce qui double code?
La fonctionnalité ci-dessus garantit que seule une instance de A/B/... existe pour un identifiant.
Ce n'est pas beaucoup de code en double. Vous pourriez écrire un dictionnaire plus spécialisé pour le rendre plus facile, alors ce serait un one-liner. –
donc c'est un programme à un seul thread, je suppose? –
@Kirk Wool, oui ... ce truc va échouer assez spectaculairement dans le code multi-thread. – jameszhao00