Delegation (von ‚Abordnung‘, ‚Übertragung‘) hat in der
objektorientierten Programmierung verschiedene Bedeutungen, die alle mit dynamischer
Methodenbindung zur
Programmlaufzeit zu tun haben:
- insbesondere in .NET-Sprachen wie C# eine objektorientierte Variante von Methodenzeigern.
- objektbasierte Vererbung (im Gegensatz zur üblichen klassenbasierten Vererbung). Hierbei übernimmt ein Objekt (automatisch) Eigenschaften und Funktionalitäten, die es selbst nicht explizit definiert, von einem anderen konkreten Objekt, seinem Prototypen.
- ursprünglich die Implementierung von Methoden eines Objekts durch Aufruf äquivalenter Methoden eines anderen Objekts, auch (für Absprache, Beratung) oder invocation (Aufruf) genannt. Diese Variante passt zu den Entwurfsmustern Proxy und Adapter.
- die Sprache Objective-C kennt das Schlüsselwort delegate als Funktionalitätsspezialisierung: Hier kann ein Objekt zur Laufzeit nach einer beliebigen Funktionalität (Methode) befragt werden. Diese kann dann im Kontext des fragenden Objekts ausgeführt werden als sei sie Teil des fragenden Objekts.