Bonjour.
Je sais que le sujet a déjà été abordé, mais j'aimerai revenir sous un angle different, sur comment gérer des champs static dans une hierarchie.
A garder en tete lors de la discution :
Un des avantage d'un champ static, est que l'on n'a pas besoin d'instancier la classe pour s'en servir. Notion tres importante, c'est là d'où vient en grande partie mon probleme.
L'autre avantage, est que toutes les instance de la classe partage la meme "case mémoire" => economie de place, mais (dans mon cas) surtout une garantie d'un contenu unique entre toutes les instances.
Enfin, cela permet de ne pas recopier du code entre les classes enfants. Et je dis bien classes et non objet ! (oui je sais c'est faux, on en arrive donc à mon probleme).
Voici donc mon probleme : Je crée une classe abstraite AFruit. Et je veux m'assurer que les developpeurs qui implémenteront des classe Pomme Poire Banane, exposent une Methode Construct qui s'assure que le fruit ai le droit d'etre construit.
Voici un exemple, notez que seul le type de s_entrepot change. Domage de devoir dupliquer ce tout ce code, quelque chose ne va pas, c'est clair !
L'idée serait donc, de déporter la methode static Construct dans une classe abstraite AFuit parent de Pomme et Poire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 classe Pomme: IFruit { static EntrepotPomme s_entreport public static void SetEntrepot (IEntrepot entrepot) { s_entrepot = entrepot; } public public static IFruit Construct() { if(!s_entrepot.IsFull()) return new Pomme(); else return null; } } classe Poire: IFruit { static EntrepotPoire s_entreport public static void SetEntrepot (IEntrepot entrepot) { s_entrepot = entrepot; } public public static IFruit Construct() { if(!s_entrepot.IsFull()) return new Pomme(); else return null; } }
Comment faire?
N.B : le scenario que j'expose n'est pas exactement celui que je vis, mais s'en rapproche juste assez pour ne pas rendre mes explications plus complexes qu'elles ne sont deja.
Partager