Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Sinn und Zweck von Interfaces

  Alt 20. Dez 2008, 15:21
In Delphi sind müssen alle Interfaces von IInterface abgeleitet werden (dies ist ein Alias für IUnknown). Das ist oftmals sehr ärgerlich, Delphi lässt jedoch keine neuen Basis-Interfaces zu. Die Referenzzählung kannst du ausschalten, indem du in deinen Klassen _AddRef und _Release leer implementierst.
Die GUID dient dazu Interfaces eindeutig zu identifizieren. In Delphi benötigst du die GUID, um den as-Operator verwenden zu können, da dieser implizit QueryInterface verwendet, welches die GUID des Zielinterfacetyps erwartet.

Bezüglich der Interface-Objekte: Die selbe Frage kannst du für abstrakte Klassen stellen und beantworten: Abstrakte Klassen und Interfaces müssen immer konkretisiert werden. In deinem Beispiel Verwendung von Interfaces natürlich nicht sinnvoll. Interessant wird es, wenn eine Routine mit Objekten arbeitet, die sie nicht selbst erstellt hat. Ein Binärbaum könnte zum Beispiel Objekte verwalten, die ein Interface IComparable implementieren (das lässt sich mit Generics noch weiter verbessern, aber das ist hier nicht das Thema): Dadurch kann der Binärbaum Vergleiche durchführen, aber ohne sich auf eine konkrete Klasse festzulegen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat