85 votes

Quand dois-je choisir l'héritage plutôt qu'une interface lors de la conception de bibliothèques de classes C# ?

J'ai un certain nombre de Processor qui feront deux choses très différentes, mais sont appelées à partir du code commun (une situation d'"inversion de contrôle").

Je me demande de quelles considérations de conception je devrais être conscient (ou conscient, pour vous, les utilisateurs) lorsque je décide s'ils doivent tous hériter de BaseProcessor , ou implémenter IProcessor en tant qu'interface.

2voto

jitendra garg Points 27

Je ne suis pas assez doué pour les choix de conception, mais si on me le demande, je préférerai implémenter une interface iProcessor s'il n'y a que des membres à étendre. S'il y a d'autres fonctions qui n'ont pas besoin d'être étendues, hériter de baseprocessor est une meilleure option.

2voto

Jodrell Points 14205

Mis à part la pureté de la conception, vous ne pouvez hériter qu'une seule fois, donc si vous devez hériter d'une classe de framework, la question est sans objet.

Si vous avez le choix, de manière pragmatique, vous pouvez choisir l'option qui économise le plus de frappe. C'est généralement le choix des puristes de toute façon.

ÉDITER:

Si la classe de base a une implémentation, cela pourrait être utile, si elle est purement abstraite, cela peut aussi bien être une interface.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X