¿Interfaz o clase abstracta?
Para mi nuevo Pet-Project tengo una pregunta para el diseño, eso ya está decidido, pero también quiero algunas otras opiniones al respecto.
Tengo dos clases (simplificadas):
class MyObject
{
string name {get;set;}
enum relation {get;set;}
int value {get;set;}
}
class MyObjectGroup
{
string name {get;set;}
enum relation {get;set;}
int value {get;set;}
List<MyObject> myobjects {get;set;}
}
Mas tarde en el proyectoMyObjectGroup
yMyObject
debe ser utilizado por igual. Para esto podría ir de dos maneras:
IObject
Crear una clase abstracta:ObjectBase
Decidí seguir el camino de la interfaz, que luego en código no debo escribirObjectBase
cada vez peroIObject
Sólo por facilidad, pero ¿cuáles son otros aspectos positivos de esta manera?
Y segundo, ¿qué hay de añadirIXmlSerializable
a toda la historia? Deje que la interfaz herede deIXmlSerializable
o tiene más aspectos positivos para implementarIXmlSerializable
en la clase base abstracta?