Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#11

Re: Konzeptfrage: Gleiche Codebasis, Kundenspezifische Anpas

  Alt 22. Nov 2007, 14:02
Zitat von Andreas H.:
Wie funktioniert das Ganze, wenn eine Klasse eine weitere Klasse instanziert und beide sind kundenspezifisch?
Dann muss die Factory in jedem Konstruktor realisiert sein?
Äh, die Frage verstehe ich noch nicht ganz. Wo genau wird denn die andere instanziierte Klasse verwendet? Die Factory wird übrigens keineswegs in einem Konstruktor realisiert!

Ganz allgemein nochmal an einem Beispiel:
Delphi-Quellcode:
type
  TBaseClass = class(TObject)
    public
      procedure doFoo(); virtual; abstract;
  end;

  TClass1 = class(TBaseClass)
    public
      procedure doFoo(); override;
  end;
  
  TClass2 = class(TBaseClass)
    private
      s: TStrings;
    public
      procedure doFoo(); override;
  end;
So, die Implementierungen kannst Du beliebig wählen. TClass2 verwendet intern eine weitere Klasse (TStrings), wird eben auch irgendwann mal instanziiert (denk Dir das sauber mit Konstruktor und Destruktor). Natürlich kann jetzt TClass2 ohne Probleme eine beliebige Anzahl von Klassen verwenden, solange die nur intern benötigt werden.
Eine Fabrik hätte dann noch die folgende Form (bzw. könnte die folgende Form haben):

Delphi-Quellcode:
type
  TBaseClassFactory = class(TObject)
    public
      class function getNewInstance(): TBaseClass;
  end;
Als class function hier definiert, damit Du keine Instanz benötigst, kannst einfach TBaseClassFactory.getNewInstance() schreiben. Intern wird dann eben einer der Nachfahren instanziiert und zurückgegeben (die Auswahl kann über alles mögliche geschehen, man könnte auch einen Parameter im Konstruktor übergeben!).
  Mit Zitat antworten Zitat