Шаг 49 - Повторное использование кода в COM

Для реализации этой возможности в COM предусмотрено три механизма. Идея заключается в следующем. Вы создаете COM и отлаживаете. В последствии можете использовать его как кирпичик для других объектов.

Включение 		containment
Посредничество 		delegation
Агрегация 		aggregation

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

49_1.gif (996 b)

Посредничество - Один из объектов дает доступ к методам и свойствам другого объекта.

49_2.gif (974 b)

Агрегация - позволяет клиенту обращаться на прямую к другому COM объекту.

49_3.gif (974 b)

Давайте рассмотрим эту ситуацию на таком примере. Нам надо создать класс, который будет реализовывать статистические расчеты. Например, высчитывать MIN или MAX. Можно реализовать два COM объекта - MIN и MAX. Для удобства использования их лучше объединить в один общий COM. Если статистика будет очень серьезная скажем многофакторный анализ трехмерных данных, то во-первых наличие ошибки очень вероятно, кроме того алгоритм может улучшаться, что менять весь COM объект ??? Заново компилировать отлаженный код значит ??? Ошибочки новые. Кроме того, если разрабатывается большой проект, то он все равно делается по частям. Или вам самому придется делать все. Лучше распределить работу, а потом объединить все вместе. В общем есть в этом необходимость. Посмотрите рисунки. Любой из этих вариантов позволяет эту ситуацию улучшить. Только два первых варианта требует изменения базового объекта, а последний вариант наиболее прозрачный. Зато первый вариант самый надежный. Второй требует согласованности. Добавили интерфейс к внутреннему значит нужно добавить и к внешнему. В последнем варианте возникает необходимость дополнительных операций с запросом интерфейса.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 25.02.2001