Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Sinn und Zweck von Interfaces

  Alt 14. Apr 2009, 15:45
Hallo,
Zitat von I.A:
Wenn mein Interface von einer anderen Klasse in einer DLL implementiert wird, muss ich da nicht im Interface den Konstruktor der implementierenden Klasse verfügbar machen, damit ich die Klasse, die ich über das Interface ansprechen will, auch zuverlässig erzeugen kann.
Ein Interface kann keinen Konstruktor beinhalten, da ein Interface ja nur die Fassade für ein vorhandenes Objekt ist. Es gibt z. B. keine statischen Interface-Methoden. Folglich benötigst Du eine Factory, welche Dir ein Interface zurückgibt. Microsoft mach das z. B. so mit den CoCreate* Funktionen.
Zitat von I.A:
Das gleiche müsste dann natürlich für den Destruktor gelten, der die Klasse am Ende wieder frei gibt.
Mit Interfaces gibt es eigentlich keinen Destruktor, da Interfaces normalerweise über die Referenzzählung verwaltet werden.
Zitat von I.A:
Und was ist mit der Free Methode. Die muss doch dann auch im Interface verfügbar sein oder?
Hier gilt natürlich das gleiche wie beim Destruktor, ohne Destruktor ist auch Free sinnlos. Wenn Du natürlich ohne Referenzzählung arbeitest (bzw. diese ausschaltest), dann kannst Du auch Free ins Interface aufnehmen. Damit bewegst Du Dich aber außerhalb der COM-Regeln und verlierst einige Vorzüge (bzw. Nachteile ) von Interfaces, z. B. die automatische Objektfreigabe. Solange Du Dir dessen bewusst bist und die Schnittstelle nicht veröffentlichen willst, ist das aber kein Problem.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat