quel pattern utiliser

quel pattern utiliser - C#/.NET managed - Programmation

Marsh Posté le 07-12-2010 à 11:06:23    

Bonjour, j'ai une petite question sur une partie de l'implementation de mon model.
Pour info je suis en C# mais ca devrait pas etre utile pour me repondre.
 
J'ai un type d'objet, appelons le TypeA
La dessus j'ai une classe abstraite qu'on appelera AbstractA
Les classes concretes derivant de Abstract sont ConcreteA et ConcreteB
J'ai aussi une autre classe Container
 
AbstractA me dit qu'elle a un attribut "nodes" de type List<TypeA>, cad il a entre 0..* TypeA
Container contient des AbstractA et doit avoir acces a la liste de nodes
 
dans ConcreteA c'est facile, ConcreteA à une List<TypeA>
par contre dans ConcreteB je voudrais qu'il y ait maximum un seul element dans la List<TypeA>
 
y a t il un moyen de faire ca?
ci dessous un pseudo code
 
//ps j'ai simplifié mon cas, en fait TypeA est une interface et j'ai plusieurs classes qui l'implementent, mais je pense pas que ce soit pertinent ici)
 

Code :
  1. public class TypeA{}
  2. public abstract class AbstractA
  3. {
  4.   private List<TypeA> _Nodes;
  5.   public List<TypeA> Nodes{ get{return _Nodes;}}
  6. }
  7. public class ConcreteA : AbstractA {}
  8. public class ConcreteB : AbstractA
  9. {
  10.   //IMPLEMENTER LE FAIT QU'IL N'Y A QU'UN ELEMENT DANS LA LISTE AU MAX
  11. }
  12. public class Container
  13. {
  14.   public List<AbstractA> desAbstractAs {get;set;}
  15.   public void uneFonctionQuiUtiliseLesNodes(){}
  16. }


---------------
Toinou87 ;-p May the force be with you!!
Reply

Marsh Posté le 07-12-2010 à 11:06:23   

Reply

Marsh Posté le 07-12-2010 à 12:23:01    

tu pourrais garder la liste de Nodes private et exposer des méthodes d'ajout et de suppression au niveau de AbstractA.
Tu peux alors mettre de la logique dans tes méthodes d'ajout pour vérifier qu'il n'y a qu'un seul élément dans la classe ConcreteB.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 07-12-2010 à 14:45:03    

fluminis a écrit :

tu pourrais garder la liste de Nodes private et exposer des méthodes d'ajout et de suppression au niveau de AbstractA.
Tu peux alors mettre de la logique dans tes méthodes d'ajout pour vérifier qu'il n'y a qu'un seul élément dans la classe ConcreteB.


ben je suis en train de faire quelque chose de similaire justement.
 
mais j'essaye d'avoir une implémentation la plus generique possible (du moins au niveau des signatures) mais c'est pas evident.
 
ce que j'aurai bien aimé c'est avoir une espece d'interface qui ferait TypeA et List<TypeA>
J'ai meme pensé a faire 2 classes de containers de TypeA ou List<TypeA> qui elles implementeraient une interface commune. Mais bon je suis pas trop sur de la beauté du truc


---------------
Toinou87 ;-p May the force be with you!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed