Einzelnen Beitrag anzeigen

Benutzerbild von mh166
mh166

Registriert seit: 14. Nov 2004
Ort: Chemnitz
443 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Designfrage: Liste selber schreiben? Oder von TList oder TList<T> ableiten?

  Alt 8. Sep 2014, 11:10
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:
  1. 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.
  2. Klasse TEspBaseList von TList ableiten
    Vorteil: Listenverwaltung komplett fertig und Einsatzbereit.
    Nachteil: Keine Ableitung von TEspBase möglich, da keine Mehrfachvererbung möglich ist.
  3. 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
Tiefgründige Sätze unserer Zeit:
Zitat von Luckie:
Und diesen Token zur Laufzeit zu modifizieren würde bedeuten, dass du zur laufzeit das Token ändern musst.
  Mit Zitat antworten Zitat