Freigeben über


Containment/Delegierung

Der häufigste Mechanismus für die Wiederverwendung von Objekten in COM ist die Eindämmung/Delegierung. Diese Art der Wiederverwendung ist ein vertrautes Konzept, das in den meisten objektorientierten Sprachen und Systemen zu finden ist. 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 benötigt, 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 dieselben Schnittstellen unterstützen, obwohl es sicherlich sinnvoll ist, ein Objekt zu enthalten, das eine Schnittstelle implementiert, die das äußere Objekt nicht tut, und die Methoden des äußeren Objekts einfach als Aufrufe der entsprechenden Methoden im inneren Objekt implementiert. Wenn sich die Komplexität der äußeren und inneren Objekte jedoch stark unterscheidet, kann das äußere Objekt einige Methoden seiner Schnittstellen implementieren, indem Aufrufe an 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 ähnelt einem 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 des Zeigers auf das innere Objekt einen Aufruf einer inneren Objektmethode.

Aggregation