Ein-/Delegierung

Der gängigste Mechanismus für die Wiederverwendung von Objekten in COM ist die Ein-/Delegierung von . Diese Art der Wiederverwendung ist ein vertrautes Konzept in den meisten objektorientierten Sprachen und Systemen. Das äußere Objekt, das das innere Objekt verwenden muss, fungiert als Objektclient für das innere Objekt. Das äußere Objekt "enthält" das innere Objekt, und wenn das äußere Objekt die Dienste des inneren Objekts erfordert, delegiert das äußere Objekt die Implementierung explizit an die Methoden des inneren Objekts. Das heißt, das äußere Objekt verwendet die Dienste des inneren Objekts, um sich selbst zu implementieren.

Es ist nicht erforderlich, dass die äußeren und inneren Objekte die gleichen Schnittstellen unterstützen, obwohl es sicherlich sinnvoll ist, ein Objekt zu enthalten, das eine Schnittstelle implementiert, die das äußere Objekt nicht implementiert, und die Methoden des äußeren Objekts einfach als Aufrufe der entsprechenden Methoden im inneren Objekt zu implementieren. Wenn sich die Komplexität der äußeren und inneren Objekte jedoch erheblich unterscheidet, kann das äußere Objekt einige der Methoden seiner Schnittstellen implementieren, indem Aufrufe von Schnittstellenmethoden delegiert werden, die im inneren Objekt implementiert sind.

Es ist einfach, ein Containment für ein äußeres Objekt zu implementieren. Das äußere Objekt erstellt die inneren Objekte, die es wie jeder andere Client verwenden muss. Dies ist nichts Neues– der Prozess ist wie ein C++-Objekt, das selbst ein C++-Zeichenfolgenobjekt enthält, das zum Ausführen bestimmter Zeichenfolgenfunktionen verwendet wird, auch wenn das äußere Objekt nicht als eigenes Zeichenfolgenobjekt betrachtet wird. Anschließend generiert ein Aufruf einer Methode im äußeren Objekt mithilfe seines Zeigers auf das innere Objekt einen Aufruf einer inneren Objektmethode.

Aggregation