Hallo Leute,
ich bin im Moment gerade dabei für ein Projekt meine Klassen zu konzipieren und stehe dabei vor einer vermutlich eher trivialen Entscheidung. Dennoch würde ich gern eure Meinung dazu hören, ob ihr Argumente Für oder Wider habt — oder ob ihr der Meinung seid, dass es hier auf den persönlichen Geschmack ankommt.
Kurz zur Situation: ich habe verschiedene Klassen, für die ich jeweils Listen-Klassen erstellen möchte. Mal als Konzept in Pseudo-Code:
Delphi-Quellcode:
type
TESPBase =
class
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
virtual;
function DumpToJSON:
String;
virtual;
end;
TEmployee =
class(TESPBase)
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
function DumpToJSON:
String;
property ID:
String;
property FirstName:
String;
property LastName:
String;
end;
TEmployeeList =
class(TESPBase)
constructor Create;
destructor Destroy;
function LoadFromXML(
xml: TJclSimpleXMLElem): Boolean;
function DumpToJSON:
String;
procedure Add(Elem: TEmployee);
procedure Clear;
procedure Delete(
Index: Integer);
procedure IndexOfID(SearchID:
String);
property Items[
Index: Integer]: TEmployee;
property ItemsByID[
Index:
String]: TEmployee;
end;
Das soll jetzt mal als Beispiel dienen. Worum es mir jetzt geht: ich habe einige andere Klassen, die wie TEmployee im Beispiel, jeweils eine Listen-Klasse erhalten sollen. Im Großen und Ganzen unterscheiden diese sich jeweils nur durch diverse Properties und die Implementierung der Funktion LoadFromXML().
Ich würde an der Stelle jetzt eine Klasse TEspBaseList erstellen, von der ich dann sowohl TEmployeeList als auch alle anderen Listen ableiten kann.
Dafür sehe ich jetzt 3 Möglichkeiten:
- Klasse TEspBaseList selbst schreiben
Vorteil: Ich könnte mich beim Funktionsumfang auf das beschränken, was für mich erforderlich ist. Ableitung von TEspBase ist möglich.
Nachteil: Muss eben selber geschrieben werden. Ist jetzt kein zu großer Nachteil, aber kostet halt doch Zeit.
- Klasse TEspBaseList von TList ableiten
Vorteil: Listenverwaltung komplett fertig und Einsatzbereit.
Nachteil: Keine Ableitung von TEspBase möglich, da keine Mehrfachvererbung möglich ist.
- Klasse TEspBaseList von TList<TEmployee> ableiten
Vorteil: ... ich hab ehrlich gesagt keine Ahnung was der Vorteil gegenüber #2 ist ...
Nachtteil: Wie auch bei #2: kein Nachfahre von TEspBase.
Was würdet ihr an meiner Stelle tun? Gibt es noch Vor- oder Nachteile an die ich nicht gedacht habe? Oder ist das wirklich eine reine Geschmackssache?
Vielen Dank schon mal!
Gruß, mh166