Архитектура движка. Паттерны.
GameDev.ru / Сообщества / Архитектура движка. / Статьи / Паттерны GoF - Facade (лекция)

Паттерны GoF - Facade (лекция)

Автор:

<MiF> Facade
<MiF> Назначение - предоставляет унифицированный интерфейс вместо множества наборов интерфейсов какой-то подсистемы. То есть определяет интерфейс более высокого уровня, с которым все становится проще :)
<MiF> Применять когда:
<MiF> 1. Нужно предоставить простой интерфейс к сложной подсистеме, который включает почти все что нужно клиентам
<MiF> 2. Нужно разложить систему на слои, можно упростить зависимости между подсистемами, если разрешить им трогать друг друга только через фасады
<MiF> Участники:
<MiF> 1. Facade - фасад, знает каким классам подсистемы послать запрос, делегирует запросы клиентам подходящим объектам подсистемы
<MiF> 2. Классы подсистем - реализуют функциональность системы, выполняют поручения Facade, !не знают о фасаде, не хранят ссылок на него!
<MiF> Что в результате:
<MiF> 1. изоляция клиентов от компонентов системы, упрощение работы с ней
<MiF> 2. Ослабляет сцепленность (скорее так) между клиентами и внутренними компонентами подсистемы
<MiF> 3. Если все-таки нужно работать напрямую - не проблема
<MiF> Нужен пример
<MiF> и Rageous снова задаст свой вопрос :)
<Rageous> да не, вопросов у меня больше нет
<MiF> ок
<MiF> всем понятно, чем фасад отличается от декоратора?
<xmvlad> только не сцепленность :)
<MiF> а связанность?
<xmvlad> сцепленность - концептуальная связность
<MiF> ок
<xmvlad> связность - связность взаимодействия
<MiF> сэнкс за поправку
<xmvlad> уменьшается именно взаимодействие
<MiF> блин
<MiF> я бы в принципе поспорил :)
<xmvlad> давай
<Rageous> сцепленность и связность хорошо аруслан объяснил
<MiF> ладно, не важно
<MiF> итак понятно
<Rageous> пример из геймдева бы...
<MiF> Да вот думаю
<Rageous> на самом деле, на же физика )
<Rageous> реализация скрыта за очень простым оо интерфейсом зачастую
<Rageous> или загрузчик данных, скрывающий за собой классы, извлекающие данные, парсеры, всяческие валидаторы
<Rageous> т.е. типичный менеджер ресурсов
<MiF> в точку :)
<MiF> тут фигня в чем - нельзя привести простой пример
<MiF> ибо к просто системе фасад нафиг не нужен
<kas> давай флайвейт
<MiF> тут вопросов нет?
<Rageous> неа
<kas> вроде нет

22 января 2006

2001—2018 © GameDev.ru — Разработка игр