Фасад (Facade) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Admin (обсуждение | вклад) (→Участники) |
Admin (обсуждение | вклад) (→Участники) |
||
Строка 18: | Строка 18: | ||
==== Участники==== | ==== Участники==== | ||
− | * Facade - фасад | + | * '''Facade''' - фасад |
Знает, каким классам подсистемы адресовать запрос | Знает, каким классам подсистемы адресовать запрос | ||
Делегирует запросы клиентов подходящим объектам внутри подсистемы | Делегирует запросы клиентов подходящим объектам внутри подсистемы | ||
+ | |||
+ | * '''Классы подсистемы''' | ||
+ | * Реализуют функциональность подсистемы | ||
+ | * Выполняют работу, порученную объекту Facade | ||
+ | * Ничего не знают о существовании фасада | ||
=== Пример === | === Пример === |
Версия 09:39, 5 августа 2014
Назначение
Предоставляет простой интерфейс к большой системе, которая обычно представляет множество взаимосвязанных классов.
Описание
Разбиение на подсистемы и сведение к минимуму зависимостей подсистем - цель любого проектирования. Один из способов решения этой задачи - представление объекта Фасад, предоставляющего единый упрощенный интерфейс к сложной системе.
Назначение
Паттерн Фасад используется:
- когда требуется предоставить простой интерфейс к сложной подсистеме
- когда необходимо отделить подсистему от клиентов, повышая переносимость
- когда требуется разбить подсистему на слои. Если подсистемы зависят друг от друга, то можно разрешить им обмениваться информацией только через фасады
Реализация
Диаграмма классов
Участники
- Facade - фасад
Знает, каким классам подсистемы адресовать запрос Делегирует запросы клиентов подходящим объектам внутри подсистемы
- Классы подсистемы
- Реализуют функциональность подсистемы
- Выполняют работу, порученную объекту Facade
- Ничего не знают о существовании фасада