Jump to content

Фасадный рисунок

(Перенаправлено из шаблона фасада )

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

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

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

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

  • Чтобы упростить использование сложной подсистемы, для набора интерфейсов в подсистеме должен быть предусмотрен простой интерфейс.
  • Зависимость от подсистемы должна быть минимизирована.

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

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

Определите Facade возразить, что

  • реализует простой интерфейс с точки зрения (путем делегирования) интерфейсов в подсистеме и
  • может выполнять дополнительные функции до/после пересылки запроса.

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

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

[ редактировать ]

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

Шаблон Намерение
Адаптер Преобразует один интерфейс в другой, чтобы он соответствовал ожиданиям клиента.
Декоратор Динамически добавляет ответственности к интерфейсу путем переноса исходного кода.
Фасад Обеспечивает упрощенный интерфейс

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

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

Структура

[ редактировать ]

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

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

В этой UML классов диаграмме тот Client class не имеет прямого доступа к классам подсистемы. Вместо этого Client работает через Facade класс, который реализует простой интерфейс с точки зрения (путем делегирования) классов подсистемы ( Class1, Class2, и Class3). Client зависит только от простого Facade интерфейс и не зависит от сложной подсистемы. [ 4 ]

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

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

[ редактировать ]

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

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

struct CPU {
  void Freeze();
  void Jump(long position);
  void Execute();
};

struct HardDrive {
  char* Read(long lba, int size);
};

struct Memory {
  void Load(long position, 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 memory_;
  HardDrive hard_drive_;
};

int main() {
  ComputerFacade computer;
  computer.Start();
}

См. также

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 77222fe59169ba18d9c69c0bedb3d833__1720007580
URL1:https://arc.ask3.ru/arc/aa/77/33/77222fe59169ba18d9c69c0bedb3d833.html
Заголовок, (Title) документа по адресу, URL1:
Facade pattern - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)