Поделиться через


Содержит или делегирование

Наиболее распространенный механизм повторного использования объектов в COM — это содержит или делегирование. Этот тип повторного использования — это знакомая концепция, найденная в большинстве объектно-ориентированных языков и систем. Внешний объект, который должен использовать внутренний объект, выступает в качестве клиента объекта для внутреннего объекта. Внешний объект "содержит" внутренний объект, и когда внешний объект требует служб внутреннего объекта, внешний объект явно делегирует реализацию методам внутреннего объекта. То есть внешний объект использует службы внутреннего объекта для реализации.

Внешние и внутренние объекты не нужны для поддержки одинаковых интерфейсов, хотя, безусловно, разумно содержать объект, реализующий интерфейс, который не является внешним объектом, и реализовать методы внешнего объекта просто как вызовы соответствующих методов в внутреннем объекте. Однако при значительной сложности внешних и внутренних объектов внешний объект может реализовать некоторые методы его интерфейсов, делегируя вызовы методов интерфейса, реализованных в внутреннем объекте.

Легко реализовать сдерживание внешнего объекта. Внешний объект создает внутренние объекты, которые он должен использовать, как любой другой клиент. Это ничего нового— процесс похож на объект C++, который сам содержит строковый объект C++, который он использует для выполнения определенных строковых функций, даже если внешний объект не считается строковым объектом в собственном праве. Затем, используя указатель на внутренний объект, вызов метода во внешнем объекте создает вызов внутреннего метода объекта.

Агрегат