Фасад (шаблон проектирования): различия между версиями

Материал из DZWIKI
Перейти к навигации Перейти к поиску
Строка 530: Строка 530:
== Ссылки ==
== Ссылки ==
{{википедия|Фасад (шаблон проектирования)}}
{{википедия|Фасад (шаблон проектирования)}}
*[http://cpp-reference.ru/patterns/structural-patterns/facade/ Паттерн Facade (фасад)] — назначение, описание, особенности и реализация на C++.
* [http://largescalejs.ru/the-facade-pattern/ Паттерны для масштабируемых JavaScript-приложений. Глава 9. Паттерн «Фасад»] — описание, пример реализации.


[[Категория:Категоризовать]]
{{Типы Паттернов}}
 
[[Категория:Шаблоны проектирования]]
[[Категория:Структурные шаблоны проектирования]]
[[Категория:Статьи с примерами кода Ruby]]

Версия от 23:20, 10 июня 2023

Фасад
Facade
Ошибка Lua в Модуль:Wikidata на строке 288: attempt to index field 'wikibase' (a nil value).
Тип структурный
Описан в Design Patterns Да

Шаблон фасад (англ. Facade) — структурный шаблон проектирования, позволяющий скрыть сложность системы путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы.

Описание

Файл:Facade.gif

Проблема

Как обеспечить унифицированный интерфейс с набором разрозненных реализаций или интерфейсов, например, с подсистемой, если нежелательно сильное связывание с этой подсистемой или реализация подсистемы может измениться?

Решение

Определить одну точку взаимодействия с подсистемой — фасадный объект, обеспечивающий общий интерфейс с подсистемой, и возложить на него обязанность по взаимодействию с её компонентами. Фасад — это внешний объект, обеспечивающий единственную точку входа для служб подсистемы. Реализация других компонентов подсистемы закрыта и не видна внешним компонентам. Фасадный объект обеспечивает реализацию GRASP паттерна Устойчивый к изменениям (Protected Variations) с точки зрения защиты от изменений в реализации подсистемы.

Особенности применения

Шаблон применяется для установки некоторого рода политики по отношению к другой группе объектов. Если политика должна быть яркой и заметной, следует воспользоваться услугами шаблона Фасад. Если же необходимо обеспечить скрытность и аккуратность (прозрачность), более подходящим выбором является шаблон Заместитель (Proxy).

Примеры

C++

JavaScript

PHP

Python

C#

Литература

Ссылки