2010-05-04 14 views
1

Je veux créer un paquet extensible que j'écris qui a la topologie, le noeud & Classes de rapport. L'idée est que ces classes de base auraient les différentes méthodes nécessaires pour baser les méthodes de traversée de graphe, etc. Je voudrais alors pouvoir réutiliser ceci en étendant le paquet.C# - Quelle approche puis-je utiliser pour étendre un groupe de classes incluant des méthodes implémentées? (voir la description pour plus de détails)

Par exemple, les conditions de base peuvent être associées à un lien avec un noeud parent & childNode. La topologie aurait une liste de nœuds et une liste de relations. La topologie aurait des méthodes comme FindChildren (profondeur d'int).

Ensuite, l'utilisation serait d'étendre ces tels que des attributs supplémentaires pour le noeud et les relations pourraient être ajoutées, etc.

QUESTION - Quelle serait la meilleure approche pour emballer & exposer des classes au niveau de base/méthodes? (c'est un peu comme une collection personnalisée mais avec plusieurs facettes). Est-ce que les concepts suivants entrent en jeu:

  1. Interfaces - Serait-ce une bonne idée d'avoir ITopology, INode etc, ou est-ce pas nécessaire que l'utilisateur étendrait ces classes de toute façon?
  2. classes abstraites - seraient les classes de base soit des classes abstraites
  3. Custom Collection générique - serait une approche utilisant ce concept aider (mais comment ce travail s'il y a les 3 classes différentes)

Répondre

1

Je dirais classes de base abstraites implémentant une interface, avec au moins une classe d'implémentation pour chaque classe de base. Les utilisateurs peuvent choisir d'étendre la classe de base ou d'aller de l'avant avec une classe d'implémentation fonctionnelle ou, en plus, ils peuvent simplement implémenter l'interface requise dans son intégralité.

+0

J'ai ajouté quelques précisions que j'ai oublié aussi (désolé) – Greg