Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 08:45
Hallo,

ich sitze gerade an einer Klassenbibliothek für einen Reportgenerator. Ich habe eine 'Oberklasse', die als Controller fungiert (globale Einstellungen, Nachschlagelisten etc.). Jede Klasse meiner Bibliothek hat einen Verweis auf diese Oberklasse, ungefähr so:

Delphi-Quellcode:
Type
  TMasterClass = Class;
  TSomeItem = Class
  fMaster : TMasterClass;
  End;

  TAnotherItem (TSomeItem)
  End;

  TSomeItemList = Class (TList)
  ...
  End;

  TAnotherItemList = Class (TList)
  ...
  End;

  ...
  TMasterClass = Class
  Private
    fSomeItemList : TSomeItemList;
    fAnotherItemList : TAnotherItemList;
  Public
    Property SomeItemList : TSomeItemList Read fSomeItemList;
    Property AnotherItemList : TAnotherItemList Read fAnotherItemList;
  End;
Nun wird die Unit langsam ziemlich lang und mir fällt keine Methode ein, wie ich das entwirren kann, denn die Basisklasse 'TSomeItem', von der alle anderen Klassen abgeleitet werden, enthält ja einen Verweis auf die Masterklasse, die in der logischen Struktur ganz oben/unten ist.

Ich hatte in einem früheren Verweis einen abstrakten Vorfahren der 'TMasterClass' in einer eigenen Unit deklariert und so die zyklischen Abhängigkeiten entwirrt, nur dann musste ich bei jeden Zugriff auf die Instanz der Masterklasse auf die konkrete Klasse casten, was programmiertipptechnisch blöd und imho kein gutes OOP-Design ist.

Also: Gibt es ein Pattern, ein paar Grundregeln, wie ich diese Geschichte elegant aufdröseln kann? Wie kann ich die einzelnen Nachfahren der 'TSomeItem' in eigene Units packen. Geht das überhaupt? Wenn ich mir die Unit 'DB' anschaue, meine ich fast, das das nicht so einfach ist...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat