Contenimento/delega
Il meccanismo più comune per il riutilizzo degli oggetti in COM è contenimento/delega. Questo tipo di riutilizzo è un concetto familiare trovato nella maggior parte dei linguaggi e dei sistemi orientati agli oggetti. L'oggetto esterno, che deve usare l'oggetto interno, funge da client oggetto all'oggetto interno. L'oggetto esterno "contiene" l'oggetto interno e quando l'oggetto esterno richiede i servizi dell'oggetto interno, l'oggetto esterno delega in modo esplicito l'implementazione ai metodi dell'oggetto interno. Ovvero, l'oggetto esterno usa i servizi dell'oggetto interno per implementarsi.
Non è necessario che gli oggetti esterni e interni supportino le stesse interfacce, anche se certamente è ragionevole contenere un oggetto che implementa un'interfaccia che l'oggetto esterno non e implementa i metodi dell'oggetto esterno semplicemente come chiamate ai metodi corrispondenti nell'oggetto interno. Quando la complessità degli oggetti esterni e interni differisce notevolmente, tuttavia, l'oggetto esterno può implementare alcuni dei metodi delle relative interfacce delegando chiamate ai metodi di interfaccia implementati nell'oggetto interno.
È semplice implementare il contenimento per un oggetto esterno. L'oggetto esterno crea gli oggetti interni che deve usare come qualsiasi altro client. Questo non è niente di nuovo: il processo è simile a un oggetto C++ che contiene un oggetto stringa C++ usato per eseguire determinate funzioni stringa, anche se l'oggetto esterno non è considerato un oggetto stringa a sé stante. Quindi, usando il puntatore all'oggetto interno, una chiamata a un metodo nell'oggetto esterno genera una chiamata a un metodo oggetto interno.
Argomenti correlati