Clase Base vs Interfaz
Leyendo el libro Programming Microsoft® ASP.NET 2.0 Core Reference(Concretamente en la página 32), Dino Esposito (Un pedazo de máquina
) hace un pequeño comentario al respecto con el que yo estoy totalemente de acuerdo (porque así lo hago día a día en mi trabajo) y es el usar Interfaces o Clases Bases en nuestros desarrollos. Comenta que en las prebetas de ASP.NET 2.0, en la implemetación del modelo basado en proveedores se hacia a través de interfaces pero en la Beta 1 las interfaces fueron remplazadas por Clases Bases ¿Por qúe?
El por qué basicamente es que las interfaces son sólo colecciones lógicas de métodos que solamente contienen la definición de los mismos y no continene nada de código. Una interfaz es buena para encapsular una funcionalidad concreta que puede ser soportada por diferentes tipos (IDisposable, IComparable...) son un ejemplo de ello, mientrás que las clases son más flexibles que las interfaces y soportan versionado, por ejemplo si tu añades un método nuevo a tu clase en la versión 2.0, las clases existentes que derivan seguirán funcionando sin tener que realizar ningún cambio, eso sí, mientras que el nuevo método no se abstracto, mientras que esto mismo en las interfaces no ocurre, pero esto tampoco quiere decir que no se deban usar interfaces nunca y nos pasemos a las clases bases (Al Cesar lo que es del Cesar).
Yo personalmente suelo utilizar Clases Bases (Antes de leer el parrafo de Dino) en mis proyectos para heredar de ellas y las interfaces la implemento cuando necesito utilizar su funcionalidad.
Es mi humilde opinión. espero las vuestras.
Salu2.