Включение
Не все классы способны к агрегированию. Для того чтобы выставить неагрегируемые
классы как часть индивидуальности другого объекта, необходимо, чтобы внешние
объекты явно передавали вызовы методов внутренним объектам. Эта технология
СОМ часто называется включением (containment).
Как показано на рис. 4.9, включение не требует никакого участия со стороны
внутреннего объекта. В то же время требуется, чтобы во внешнем объекте
производились реализации каждого интерфейса, выставляемого внутренним
объектом. Эти внешние реализации просто передают клиентские запросы внутреннему
объекту. Включение СОМ не требует никаких особых забот касательно правил
идентификации СОМ, так как внутренний объект никогда не доступен клиенту
впрямую и поэтому никогда непосредственно не внедряется в иерархию типов
внешнего объекта. Хотя СОМ-включение входит в терминологию СОМ, оно не
требует никаких особых программистских ухищрений. Фактически включаемый
объект не может обнаружить, что внешний объект переадресовывает запросы
его методов от действующего клиента.
Где мы находимся?
|