Предоставление «лица/фасада» делает код простым и понятным.

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

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

Когда мы используем фасад?

1. Когда вам нужен простой интерфейс для сложной подсистемы.

идеально подходит для очень сложных или трудных для понимания систем из-за множества взаимозависимых классов.

кроме того, подсистемы со временем усложняются. Даже применение шаблонов проектирования обычно приводит к созданию большего количества классов. Подсистема может стать более гибкой и простой для повторного использования в различных контекстах, но объем конфигурации и стандартного кода, который она требует от клиента, становится все больше. Facade пытается решить эту проблему, предоставляя ярлык для наиболее часто используемые функции подсистемы, которые соответствуют большинству требований клиентов.

2. Используйте Фасад, если хотите структурировать подсистему на слои.

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

Аналогия с реальным миром

Допустим, мы хотим вручную переключить режим вождения автомобиля. Затем вам предстоит выполнить следующие операции, чтобы достичь цели. Следующая диаграмма представляет процесс.

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

Большинству людей нравится делать что-то одним щелчком мыши. Именно здесь в игру вступает пользовательский опыт (UX). Нам нравится просто нажимать одну кнопку и не беспокоиться о сложностях. Это концепция, лежащая в основе шаблона проектирования фасадов.

Выполнение

Шаг 1: создайте интерфейс.

Шаг 2: Создайте конкретные классы, реализующие тот же интерфейс.

Шаг 3: Создайте класс фасада.

Шаг 4: Добавьте код драйвера.

Шаг 5: Проверьте вывод.

Заключение

Давайте оглянемся назад, чтобы выяснить, удовлетворяются ли намерения, стоящие за шаблоном проектирования фасада, с помощью вышеуказанной реализации. Классы спортивного режима и комфортного режима используются как подсистемы, чтобы скрыть сложность. DrivingModeFacade Class отделяет клиента, и клиент может переключать режим вождения, используя один шаг.

Фасадный паттерн не заставляет нас идти на нежелательные компромиссы, поскольку лишь добавляет дополнительные слои абстракции.

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

Подведение итогов

Наконец, я надеюсь, вы получили четкое представление о шаблоне проектирования фасадов и вариантах его использования.

Если есть что-то, что я упомянул неправильно, не стесняйтесь комментировать внизу!. Если вам понравился пост, нажмите 👏 ниже, чтобы его увидело больше людей! Убедитесь, что вы подписаны на меня в Mediumили вМой блог, чтобы получать обновления всякий раз, когда публикуется новая статья.

Удачного программирования!👌