Bonjour,
J'ai des objets (types différents) qui ont des relations mères filles.
Par exemple, pour faire l'analogie à une base de données, on a des serveurs, qui hébergent chacuns une ou plusieurs base, qui héberge chacunes une ou plusieurs tables, qui contiennent chacunes une ou plusieurs colonnes.
Je souhaite savoir quelle prototype utiliser pour pouvoir stocker simplement et proprement la relation entre un objet "fils" et son parent.
Habituellement je fais un truc du genre :
Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Mere { List<Fille> Filles { get; private set; } public Mere() {} } public Fille { Mere Parent { get; private set; } public Fille(Mere mere) { Parent = mere; } }
Mais je trouve ça contraignant (constructeur alourdi inutilement).
J'aimerais par exemple surcharger le List<Fille>.Add() pour effectuer ce rattachement, mais sans exposer de méthode SetParent() de manière publique : je n'ai pas envie de pouvoir changer de parent depuis ailleurs.
Aussi, je voudrais pouvoir empêcher de faire :
Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mere2.Filles[1] = mere1.Filles[5];
mere1.Filles[5] a déjà une mère, et je ne veux pas qu'elle puis changer en cours de route, ni que mere2 contienne des filles qui ne lui appartiennent pas.
En se lançant dans des usines à gaz avec redéfinition des accesseurs et création de classes de collections dédiées, y'a probablement moyen de s'en sortir, mais n'existe-t-il pas un design pattern simple pour gérer ça ?
Partager