9.5. Что такое зависимость? 223
9.5.1.5. Зависимость «instantiate»
Клиент – это экземпляр поставщика.
9.5.2. Зависимости абстракции
Зависимости абстракции моделируют зависимости между сущностя
ми, находящимися на разных уровнях абстракции. В качестве приме
ра можно привести класс аналитической модели и тот же класс в про
ектной модели. Существует четыре зависимости абстракции: «trace»,
«substitute», «refine» и «derive».
9.5.2.1. Зависимость «trace»
Зависимость «trace» часто используется, чтобы проиллюстрировать от
ношение, в котором поставщик и клиент представляют одно понятие,
но находятся в разных моделях. Например, поставщик и клиент могут
находиться на разных стадиях разработки. Поставщик мог бы быть
аналитическим представлением класса, а клиент – более детальным
проектным представлением. Также «trace» можно использовать, чтобы
показать отношение между функциональным требованием, таким как
«банкомат должен обеспечивать возможность снятия наличных денег
вплоть до достижения кредитного лимита карты», и прецедентом,
поддерживающим это требование.
9.5.2.2. Зависимость «substitute»
Зависимость «substitute» (заместить) показывает, что клиент во время
выполнения может заменять поставщика. Замещаемость основывает
ся на общности контрактов и интерфейсов клиента и поставщика, т. е.
они должны предоставлять один и тот же набор сервисов. Обратите
внимание, что замещаемость не достигается посредством отношений
специализации/обобщения между клиентом и поставщиком (специа
лизация/обобщение обсуждаются в разделе 10.2). В сущности, «substi
tute» специально разработана для использования в средах, не поддер
живающих специализации/обобщения.
9.5.2.3. Зависимость «refine»
Тогда как зависимость «trace» устанавливается между элементами раз
ных моделей, «refine» (уточнить) может использоваться между элемен
тами одной и той же модели. Например, в модели может быть две вер
сии класса, одна из которых оптимизирована по производительности.
Поскольку оптимизация производительности является разновидно
стью уточнения, это отношение между двумя классами можно смоде
лировать как зависимость «refine» с примечанием, описывающим суть
уточнения.