Wann sind Delegaten Schnittstellen vorzuziehen?
Wichtig Dieses Dokument enthält ggf. nicht die bewährten Methoden für die aktuelle Entwicklung. Außerdem sind Links zu Downloads und anderen Ressourcen u. U. nicht mehr gültig. Die aktuell empfohlene Version finden Sie hier. ArchiveDisclaimer

Wann sind Delegaten Schnittstellen vorzuziehen? (C#-Programmierhandbuch)

Sowohl Delegaten als auch Schnittstellen ermöglichen es einem Klassendesigner, Typdeklarationen und Implementierung voneinander zu trennen. Eine gegebene Schnittstelle kann von jeder Klasse oder Struktur geerbt und implementiert werden. Ein Delegat kann für eine Methode jeder beliebigen Klasse erstellt werden, solange die Methode mit der Methodensignatur des Delegaten übereinstimmt. Ein Schnittstellenverweis oder ein Delegat kann von jedem Objekt verwendet werden, ohne über Informationen zu der Klasse zu verfügen, die die Schnittstelle oder die Delegatmethode implementiert. Wann sollte ein Klassendesigner in Anbetracht dieser Gemeinsamkeiten einen Delegaten verwenden, und wann sollte eine Schnittstelle verwendet werden?

Verwenden Sie einen Delegaten, wenn:

  • ein Ereignisentwurfsmuster verwendet wird.

  • eine statische Methode gekapselt werden soll.

  • der Aufrufer keinen Zugriff auf weitere Eigenschaften, Methoden oder Schnittstellen des Objekts benötigt, das die Methode implementiert.

  • die einfache Verknüpfung von Delegaten gewünscht ist.

  • eine Klasse möglicherweise mehr als eine Implementierung der Methode benötigt.

Verwenden Sie eine Schnittstelle, wenn:

  • es eine Gruppe verwandter Methoden gibt, die möglicherweise aufgerufen werden.

  • eine Klasse nur eine Implementierung der Methode benötigt.

  • die Klasse, die die Schnittstelle verwendet, eine Umwandlung dieser Schnittstelle in andere Schnittstellen oder Klassentypen durchführt.

  • die Methode, die implementiert wird, mit dem Typ oder der Identität der Klasse verknüpft ist, wie zum Beispiel bei Vergleichsmethoden.

Ein gutes Beispiel für die Verwendung einer Schnittstelle mit nur einer Methode anstatt eines Delegaten ist IComparable oder IComparable. IComparable deklariert die CompareTo-Methode, die eine ganze Zahl zurückgibt, die ein Kleiner-als, Gleich- oder Größer-als-Verhältnis zwischen zwei Objekten desselben Typs angibt. IComparable kann als Grundlage für einen Sortieralgorithmus verwendet werden. Die Verwendung einer Delegatenvergleichsmethode als Grundlage für den Sortieralgorithmus ist zwar möglich, aber nicht optimal. Da die Vergleichsfunktionalität zu einer Klasse gehört und der Vergleichsalgorithmus zur Laufzeit nicht geändert wird, stellt eine Schnittstelle mit nur einer Methode die ideale Lösung dar.

Anzeigen:
© 2016 Microsoft