Compartilhar via


Contenção/delegação

O mecanismo mais comum para reutilização de objeto em COM é de contenção/delegação. Esse tipo de reutilização é um conceito familiar encontrado na maioria dos sistemas e linguagens orientadas a objetos. O objeto externo, que precisa usar o objeto interno, atua como um cliente de objeto para o 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 ofereçam suporte às mesmas interfaces, embora certamente seja razoável conter um objeto que implemente uma interface que o objeto externo não faça e implemente 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 a 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 precisa usar como qualquer outro cliente faria. 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 si só. 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.

de agregação