2010-10-28 17 views
0

J'ai un problème concernant l'utilisation des interfaces par rapport aux classes de béton.
J'ai une classe de base qui implémente certaines propriétés/méthodes communes. Maintenant j'ai deux extensions possibles. Soit cette classe de base peut avoir une propriété appelée Paramètres, soit elle peut avoir une autre propriété appelée Enfants, ou elle peut avoir les deux. De la façon dont je le vois, je pourrais créer 2 interfaces (IParameterised, IParent) ou je pourrais implémenter trois sous-classes (ParameterObject, ParentObject, ParentParameterObject). La question est, laquelle de ces deux est un meilleur design. Je penche vers la méthode d'interface pour le moment mais je ne suis pas un programmeur expérimenté de sorte que tout conseil est le bienvenuClasse design, Interfaces ou classes de béton

Répondre

1

Certains horizons sur ce sujet qui devrait vous aider: le Liskov substitution principle (plus here) et le concept de composition over inheritance. En bref, n'implémentez pas les 3 sous-classes (c'est-à-dire l'approche par héritage): que se passera-t-il si vous avez besoin de 2 ou 3 propriétés/méthodes communes supplémentaires sur la route? Avec seulement 2 ajouts, vous regardez 15 combinaisons uniques. Pour la composition, regardez dans les modèles state et strategy.

+0

Merci pour l'aide, Liskov substitution (alors qu'une lecture lourde) est un principe assez décent! – TerrorAustralis