Freigeben über


Eindämmung/Delegierung

Der gängigste Mechanismus für die Wiederverwendung von Objekten in COM ist 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 erfordert, delegiert das äußere Objekt die Implementierung explizit an die Methoden des inneren Objekts. Das äußere Objekt verwendet also die Dienste des inneren Objekts, um sich selbst zu implementieren.

Es ist nicht notwendig, dass die äußeren und inneren Objekte dieselben Schnittstellen unterstützen, obwohl es durchaus 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 implementiert. Wenn sich die Komplexität der äußeren und inneren Objekte stark unterscheidet, kann das äußere Objekt jedoch einige der Methoden seiner Schnittstellen implementieren, indem Aufrufe an im inneren Objekt implementierte Schnittstellenmethoden delegiert werden.

Es ist einfach, ein Containment für ein äußeres Objekt zu implementieren. Das äußere Objekt erstellt die inneren Objekte, die es verwenden muss, wie jeder andere Client. 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 Zeichenfolgenobjekt in eigener Eigenschaft 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