Zahrnutí/delegování
Nejběžnějším mechanismem opětovného použití objektů v modelu COM je omezení/delegování. Tento typ opakovaného použití je známý koncept, který se nachází ve většině objektově orientovaných jazyků a systémů. Vnější objekt, který potřebuje použít vnitřní objekt, funguje jako klient objektu pro vnitřní objekt. Vnější objekt "obsahuje" vnitřní objekt a pokud vnější objekt vyžaduje služby vnitřního objektu, vnější objekt explicitně deleguje implementaci na metody vnitřního objektu. To znamená, že vnější objekt používá služby vnitřního objektu k implementaci samotné.
Není nutné, aby vnější a vnitřní objekty podporovaly stejná rozhraní, i když je jistě vhodné obsahovat objekt, který implementuje rozhraní, které vnější objekt neimplementuje a implementuje metody vnějšího objektu jednoduše jako volání odpovídajících metod ve vnitřním objektu. Pokud se složitost vnějších a vnitřních objektů výrazně liší, ale vnější objekt může implementovat některé metody jeho rozhraní delegováním volání metod rozhraní implementovaných ve vnitřním objektu.
Implementace zahrnutí vnějšího objektu je jednoduchá. Vnější objekt vytvoří vnitřní objekty, které potřebuje použít jako jakýkoli jiný klient. To není nic nového – proces je jako objekt C++, který sám obsahuje objekt řetězce C++, který používá k provádění určitých řetězcových funkcí, i když vnější objekt není považován za objekt řetězce ve svém vlastním právu. Potom volání metody ve vnějším objektu pomocí ukazatele na vnitřní objekt vygeneruje volání vnitřní objekt metody.
Související témata