Schnittstelle oder abstrakte Klasse?
Für mein neues Pet-Projekt habe ich eine Frage zum Design, die bereits entschieden ist, aber ich möchte auch einige andere Meinungen dazu.
Ich habe zwei Klassen (vereinfacht):
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;}
}
Später im ProjektMyObjectGroup
undMyObject
sollte gleichermaßen verwendet werden. Dafür könnte ich zwei Wege gehen:
IObject
Erstellen Sie eine abstrakte Klasse:ObjectBase
Ich entschied mich für den Weg der Schnittstelle, die ich später im Code nicht schreiben darfObjectBase
jedes mal aberIObject
Nur zur Erleichterung - aber was sind andere Vorteile für diesen Weg?
Und zweitens, was ist mit dem Hinzufügen?IXmlSerializable
zur ganzen Geschichte? Lassen Sie die Schnittstelle von erbenIXmlSerializable
oder hat es mehr positive umzusetzenIXmlSerializable
in der abstrakten Basisklasse?