Objektumok újrafelhasználása
Minden objektummodell fontos célja, hogy lehetővé tegye az objektumkészítők számára a mások által biztosított objektumok újrafelhasználását és kiterjesztését saját implementációik részeként. Ennek egyik módja a Microsoft Visual C++ és más nyelvekben az implementációöröklésihasználata, amely lehetővé teszi, hogy az objektum egy másik objektumtól örökölje a függvények egy részét ("alosztály"), miközben felülírja a többi függvényt.
A hagyományos megvalósítási öröklést használó rendszerszintű objektumok közötti interakció problémája az, hogy a megvalósítási hierarchiában lévő objektumok közötti szerződés (interfész) nincs egyértelműen meghatározva. Valójában implicit és nem egyértelmű. Amikor a szülő- vagy gyermekobjektum megváltoztatja a megvalósítást, a kapcsolódó összetevők viselkedése meghatározatlanná vagy instabillá válhat. Minden olyan alkalmazásban, ahol az implementációt egyetlen mérnöki csapat felügyelheti, amely az összes összetevőt egyszerre frissíti, ez nem mindig jelent különösebb problémát. Egy olyan környezetben, ahol az egyik csapat összetevői a más csapatok által létrehozott más összetevők feketedobozos újrafelhasználásával épülnek fel, az ilyen típusú instabilitás veszélyezteti az újrafelhasználást. Emellett a megvalósítás öröklése általában csak a folyamat határain belül működik. Így a hagyományos implementációöröklés nem praktikus a sok mérnöki csapat által létrehozott szoftverösszetevőkből álló, nagy méretű, fejlődő rendszerek esetében.
Az újrafelhasználható összetevők létrehozásának kulcsa, hogy átlátszatlan dobozként lehessen kezelni az objektumot. Ez azt jelenti, hogy a kód egy másik objektum újrafelhasználására tett kísérlete semmit sem tud, és semmit sem kell tudnia a használt összetevő belső szerkezetéről vagy implementációjáról. Más szóval az összetevők újrafelhasználására tett kód az objektum viselkedésétől és nem a pontos implementációjától függ.
A black-box újrafelhasználhatóságának elérése érdekében a COM más, már meglévő újrafelhasználhatósági mechanizmusokat vezet be, például elszigetelési/delegálási és összesítési.
Jegyzet
A kényelem érdekében az újrahasznált objektumot belső objektumnak nevezzük, a belső objektumot használó objektum pedig a külső objektum.
Mindkét mechanizmusban fontos megjegyezni, hogyan jelenik meg a külső objektum az ügyfelek számára. Ami az ügyfeleket illeti, mindkét objektum implementál minden olyan felületet, amelyhez az ügyfél mutatót kaphat. Az ügyfél a külső objektumot átlátszatlan dobozként kezeli, ezért nem érdekli, és nem is kell törődnie a külső objektum belső szerkezetével" az ügyfél csak a viselkedéssel foglalkozik.
További információkért tekintse meg a következő témaköröket: