stringtranslate.com

Фасадный узор

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

Разработчики часто используют шаблон проектирования фасада, когда система очень сложна или трудна для понимания, поскольку в системе много взаимозависимых классов или ее исходный код недоступен. Этот шаблон скрывает сложности более крупной системы и предоставляет клиенту более простой интерфейс. Обычно он включает в себя один класс-оболочку , который содержит набор членов, требуемых клиентом. Эти члены получают доступ к системе от имени клиента фасада и скрывают детали реализации.

Обзор

Шаблон проектирования Facade [1] — один из двадцати трех известных шаблонов проектирования GoF , описывающих, как решать повторяющиеся проблемы проектирования для разработки гибкого и повторно используемого объектно-ориентированного программного обеспечения, то есть объектов, которые проще реализовывать, изменять, тестировать и повторно использовать.

Какие проблемы может решить шаблон проектирования «Фасад»? [2]

Клиенты, которые обращаются к сложной подсистеме, напрямую ссылаются (зависят от) на множество различных объектов, имеющих различные интерфейсы (тесная связь), что затрудняет реализацию, изменение, тестирование и повторное использование клиентов.

Какое решение описывает шаблон проектирования «Фасад»?

Определите Facadeобъект, который

Это позволяет работать через Facadeобъект, чтобы минимизировать зависимости от подсистемы.
См. также класс UML и диаграмму последовательности ниже.

Использование

Фасад используется, когда требуется более простой или легкий интерфейс к базовому объекту. [3] В качестве альтернативы, адаптер может использоваться, когда оболочка должна учитывать определенный интерфейс и поддерживать полиморфное поведение. Декоратор позволяет добавлять или изменять поведение интерфейса во время выполнения.

Фасадный узор обычно используется, когда

Структура

Диаграмма классов и последовательностей UML

Пример класса UML и диаграммы последовательности для шаблона проектирования «Фасад».

В этой диаграмме классов UML класс не имеет прямого доступа к классам подсистемы. Вместо этого работает через класс, который реализует простой интерфейс в терминах (делегируя) классов подсистемы ( , , и ). Зависит только от простого интерфейса и не зависит от сложной подсистемы. [4]ClientClientFacadeClass1Class2Class3ClientFacade

Диаграмма последовательности показывает взаимодействия во время выполнения: Clientобъект работает через Facadeобъект, который делегирует запрос экземплярам Class1, Class2и , Class3которые выполняют запрос.

Диаграмма классов UML

Фасад
Класс фасада абстрагирует пакеты 1, 2 и 3 от остальной части приложения.
Клиенты
Объекты используют шаблон фасада для доступа к ресурсам из пакетов.

Пример

Это абстрактный пример того, как клиент («вы») взаимодействует с фасадом («компьютером») сложной системы (внутренними частями компьютера, такими как ЦП и жесткий диск).

С++

struct CPU { void Freeze (); void Jump ( длинная позиция ); void Execute (); };         struct HardDrive { char * Read ( long lba , int size ); };       struct Memory { void Load ( длинная позиция , char * data ); };       class ComputerFacade { public : void Start ( ) { cpu_.Freeze ( ) ; memory_.Load ( kBootAddress , hard_drive_.Read ( kBootSector , kSectorSize ) ) ; cpu_.Jump ( kBootAddress ) ; cpu_.Execute ( ) ; }              private : CPU cpu_ ; Память memory_ ; Жесткий диск hard_drive_ ; };      int main () { ComputerFacade компьютер ; компьютер . Start (); }     

Смотрите также

Ссылки

  1. ^ Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес (1994). Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения . Эддисон Уэсли. стр. 185 и далее. ISBN 0-201-63361-2.{{cite book}}: CS1 maint: несколько имен: список авторов ( ссылка )
  2. ^ "Шаблон проектирования фасада - проблема, решение и применимость". w3sDesign.com . Получено 12 августа 2017 г.
  3. ^ Фримен, Эрик; Фримен, Элизабет; Сьерра, Кэти; Бейтс, Берт (2004). Хендриксон, Майк; Лукидес, Майк (ред.). Head First Design Patterns (мягкая обложка) . Том 1. O'Reilly. С. 243, 252, 258, 260. ISBN 978-0-596-00712-6. Получено 2012-07-02 .
  4. ^ "Шаблон дизайна фасада - Структура и сотрудничество". w3sDesign.com . Получено 2017-08-12 .

Внешние ссылки