Фасад
Facade
Тип структурный
Описан в Design Patterns Да

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

Описание

править

Проблема

править

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

Решение

править

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

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

править

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

Примеры

править

C++

править

JavaScript

править

CoffeeScript

править

PHP

править

Python

править

C#

править

Ruby

править

VB.NET

править

Delphi

править

Java

править

Haxe

править

Swift

править

Литература

править
  • Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design Patterns: Elements of Reusable Object-Oriented Software. — СПб.: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1. (также ISBN 5-272-00355-1)

Источники и ссылки

править

📚 Artikel Terkait di Wikipedia

Кривая Минковского

two points. * @return void */ function drawMinkowski($image, $xa, $ya, $xi, $yi, $i, $color) { if($i == 0) imageline($image, $xa, $ya, $xi, $yi, $color);

Кривая Коха

two points. * @return void */ function drawKoch($image, $xa, $ya, $xe, $ye, $i, $color) { if($i == 0) imageline($image, $xa, $ya, $xe, $ye, $color); else

Функция активации

978-0-13-273350-2. Cybenko G.V. Approximation by Superpositions of a Sigmoidal function // Mathematics of Control, Signals, and Systems / Jan H. van Schuppen. —

Байонет NX

заявил об интеграции в электронный интерфейс байонета NX-технологии i-Function (iFn), позволяющей управлять несколькими настройками фотокамеры (установками

Кривая Леви

two points. * @return void */ function drawLevy($image, $xa, $ya, $xc, $yc, $i, $color) { if($i == 0) imageline($image, $xa, $ya, $xc, $yc, $color); else

Теория установления повестки дня

D.A., & Shanahan, J. Think about it this way: Attribute agenda-setting function of the press and the public’s evaluation of a local issue. Journalism &

C++23

and_then(make_eyes_sparkle) // image → optional; [nullopt] не видно глаз .transform(make_smaller) // image → image .transform(add_rainbow); // image → image } Впоследствии

Нацистская Германия

978-0-451-23791-0. Wegner, Bernd. The Waffen-SS: Organization, Ideology and Function (англ.). — Hoboken, NJ: Blackwell, 1990. — ISBN 978-0-631-14073-3. Weinberg