Contención/delegación
El mecanismo más común para la reutilización de objetos en COM es la contención y delegación. Este tipo de reutilización es un concepto conocido que se encuentra en la mayoría de los lenguajes y sistemas orientados a objetos. El objeto externo, que debe usar el objeto interno, actúa como cliente de objeto para el objeto interno. El objeto externo "contiene" el objeto interno y, cuando el objeto externo requiere los servicios del objeto interno, el objeto externo delega explícitamente la implementación en los métodos del objeto interno. Es decir, el objeto externo usa los servicios del objeto interno para implementarse a sí mismo.
No es necesario que los objetos externos e internos admitan las mismas interfaces, aunque ciertamente es razonable contener un objeto que implemente una interfaz que el objeto externo no e implemente los métodos del objeto externo simplemente como llamadas a los métodos correspondientes del objeto interno. Sin embargo, cuando la complejidad de los objetos externos e internos difiere en gran medida, el objeto externo puede implementar algunos de los métodos de sus interfaces al delegar llamadas a métodos de interfaz implementados en el objeto interno.
Es sencillo implementar la contención de un objeto externo. El objeto externo crea los objetos internos que necesita usar como cualquier otro cliente. Esto no es nada nuevo: el proceso es como un objeto de C++ que contiene un objeto de cadena de C++ que usa para realizar determinadas funciones de cadena, incluso si el objeto externo no se considera un objeto de cadena en su propio derecho. A continuación, utilizando su puntero al objeto interno, una llamada a un método del objeto externo genera una llamada a un método de objeto interno.
Temas relacionados