Dela via


Inneslutning/delegering

Den vanligaste mekanismen för återanvändning av objekt i COM är inneslutning/delegering. Den här typen av återanvändning är ett välbekant begrepp som finns i de flesta objektorienterade språk och system. Det yttre objektet, som måste använda det inre objektet, fungerar som en objektklient till det inre objektet. Det yttre objektet "innehåller" det inre objektet, och när det yttre objektet kräver tjänster från det inre objektet delegerar det yttre objektet uttryckligen implementeringen till det inre objektets metoder. Det yttre objektet använder alltså det inre objektets tjänster för att implementera sig självt.

Det är inte nödvändigt att de yttre och inre objekten stöder samma gränssnitt, även om det verkligen är rimligt att innehålla ett objekt som implementerar ett gränssnitt som det yttre objektet inte gör och implementerar metoderna för det yttre objektet bara som anrop till motsvarande metoder i det inre objektet. När komplexiteten hos de yttre och inre objekten skiljer sig avsevärt kan dock det yttre objektet implementera några av metoderna i dess gränssnitt genom att delegera anrop till gränssnittsmetoder som implementeras i det inre objektet.

Det är enkelt att implementera inneslutning för ett yttre objekt. Det yttre objektet skapar de inre objekt som det behöver använda som alla andra klienter. Det här är inget nytt – processen är som ett C++-objekt som i sig innehåller ett C++-strängobjekt som används för att utföra vissa strängfunktioner, även om det yttre objektet inte betraktas som ett strängobjekt i sig. Sedan genererar ett anrop till en metod i det yttre objektet ett anrop till en inre objektmetod med hjälp av dess pekare till det inre objektet.

sammansättning