Compartilhar via


Contenção/Delegação

O mecanismo mais comum para a reutilização de objetos em COM é a contenção/delegação. Esse tipo de reutilização é um conceito familiar encontrado na maioria das linguagens e sistemas orientados a objetos. O objeto externo, que precisa fazer uso do objeto interno, atua como um cliente do objeto interno. O objeto externo "contém" o objeto interno e, quando o objeto externo requer os serviços do objeto interno, o objeto externo delega explicitamente a implementação aos métodos do objeto interno. Ou seja, o objeto externo usa os serviços do objeto interno para se implementar.

Não é necessário que os objetos externos e internos suportem as mesmas interfaces, embora certamente seja razoável conter um objeto que implementa uma interface que o objeto externo não suporta e implementar os métodos do objeto externo simplesmente como chamadas para os métodos correspondentes no objeto interno. Quando a complexidade dos objetos externos e internos difere muito, no entanto, o objeto externo pode implementar alguns dos métodos de suas interfaces delegando chamadas para métodos de interface implementados no objeto interno.

É simples implementar a contenção para um objeto externo. O objeto externo cria os objetos internos que ele precisa usar como qualquer outro cliente. Isso não é novidade — o processo é como um objeto C++ que contém um objeto de cadeia de caracteres C++ que ele usa para executar determinadas funções de cadeia de caracteres, mesmo que o objeto externo não seja considerado um objeto de cadeia de caracteres por direito próprio. Em seguida, usando seu ponteiro para o objeto interno, uma chamada para um método no objeto externo gera uma chamada para um método de objeto interno.

Agregação