![]() |
AW: Interfaces, Factory- und Singletonpattern
Zitat:
Code:
TObject (der hat einen Konstruktor)
- TPersistent (hat KEINEN Konstruktor deklariert) - TInterfacedPersistent (hat KEINEN Konstruktor deklariert) - TVTDialogBase (hat KEINEN Konstruktor deklariert) - TVTColorDialog (hat KEINEN Konstruktor deklariert) |
AW: Interfaces, Factory- und Singletonpattern
Deshalb hab ich ja geschrieben, das als Teil der Lösung die Basisklasse einen erhält :)
|
AW: Interfaces, Factory- und Singletonpattern
Zitat:
|
AW: Interfaces, Factory- und Singletonpattern
Warum ?
Da div. abgeleitete Klassen von Haus auf einen eigenen Konstruktur haben, habe ich das in der Basisklasse als virtuellen Konstruktor gleich vorgesehen. Wo liegt hier ein "verstoß" gegen die OOP vor ? Das ganze funktioniert genau so, wie das beabsichtigt ist. |
AW: Interfaces, Factory- und Singletonpattern
Weshalb der Umweg über RTTI ?
Da die Basis-Klasse ja nun einen virtual Constructor enthält, geht es auch direkt via Class-Type:
Code:
Type
TVTDialogBase = Class(TInterfacedPersistent,IVTDialogCall) private protected public Constructor VirtualConstructor(); Virtual; published End; TVTDialogBaseClass = Class Of TVTDialogBase; TDialogItem = ... AClass : TVTDialogBaseClass; AInst : TVTDialogBase; end; // [..] var dm : TDialogItem; Begin dm.AInst := dm.AClass.VirtualConstructor(); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz