В этой статье описывается шаблон проектирования PHP: фасад. Для вашей справки приведем следующие сведения:
1. Обзор
В режиме внешнего вида мы можем видеть только объекты внешнего вида, но не конкретные объекты деталей, обертывая внешний вид. Это, несомненно, снизит сложность приложения и улучшит ремонтопригодность программы. Пример 1: главный выключатель питания может управлять включением и выключением четырех светильников, вентилятора, кондиционера и телевизора. Главный выключатель питания может управлять всем вышеуказанным электрическим оборудованием одновременно, а главный выключатель питания-это дизайн режима внешнего вида системы.
2. Проблемы
Чтобы снизить сложность, система часто делится на несколько подсистем. Но как свести к минимуму связь и взаимозависимость между системами?
3. Решения
Режим внешнего вида Для обеспечения согласованного интерфейса для набора интерфейсов в подсистеме шаблон фасада определяет интерфейс высокого уровня, который упрощает использование подсистемы. После введения роли внешнего вида пользователю необходимо только напрямую взаимодействовать с ролью внешнего вида, и сложные отношения между пользователем и подсистемой реализуются ролью внешнего вида, что снижает степень связи системы.
4. Применимость
Используйте режим фасада, когда вы сталкиваетесь со следующими ситуациями: 1) когда вы хотите предоставить простой интерфейс для сложной подсистемы. Подсистемы, как правило, становятся все более и более сложными из-за непрерывной эволюции. Большинство шаблонов при использовании создают все больше и меньше классов. Это делает подсистему более многоразовой и простой в настройке, но также создает некоторые трудности для пользователей, которым не нужно настраивать подсистему. Фасад может предоставлять простой вид по умолчанию, этого вида достаточно для большинства пользователей, и те, кому нужна большая настраиваемость, могут перейти через слой фасада. 2) существует большая зависимость между клиентской программой и частью реализации абстрактного класса. Внедрение фасада может отделить подсистему от клиентов и других подсистем, что может повысить независимость и мобильность подсистемы. 3) когда вам нужно построить иерархическую подсистему, используйте шаблон фасада, чтобы определить точку входа каждого слоя в подсистеме. Если подсистемы являются
5. Структура
6. Состав режима строительства
Фасад: это основа рисунка. Он вызывается ролью клиента и знает функции каждой подсистемы. В то же время несколько функциональных комбинаций зарезервированы в соответствии с существующими требованиями ролей клиентов\ классов подсистем: реализует функции подсистемы и обрабатывает задачи, назначенные объектами фасада. Для подсистемы роли фасада и клиента неизвестны, и нет никакой информации о фасаде; то есть нет экземпляра, указывающего на фасад. Клиент: вызовите роль фасада для выполнения соответствующих функций.
7. Эффект
Фасадная модель обладает следующими преимуществами:
1) Защита компонентов подсистемы от клиентов уменьшает количество объектов, обрабатываемых клиентами, и упрощает использование подсистемы . Благодаря введению шаблона внешнего вида код клиента становится очень простым и имеет мало связанных с ним объектов. 2) Реализована слабая связь между подсистемой и клиентом Таким образом, изменения компонентов подсистемы не повлияют на вызывающий ее класс клиента, и необходимо настроить только класс внешнего вида. 3) Это уменьшает зависимость от компиляции в больших программных системах и упрощает процесс миграции между различными платформами , поскольку компиляция одной подсистемы обычно не требует компиляции всех других подсистем. Изменения в одной подсистеме не влияют на другие подсистемы, а изменения внутри подсистемы не влияют на объекты внешнего вида. 4) Он обеспечивает только единый доступ к подсистеме и не влияет на прямое использование пользователями классов подсистем. Фасад
8. Реализация
Мы используем пример переключателя;
11. Другие связанные модели
1) Абстрактный фабричный шаблон Абстрактный фабричный стиль может использоваться с фасадным рисунком для обеспечения интерфейса, который может использоваться для создания объектов подсистемы независимым от подсистемы способом. Абстрактная фабрика также может заменить шаблон фасада, чтобы скрыть классы, связанные с платформой. 2) Промежуточная модель Шаблон посредника аналогичен шаблону фасада в том, что он абстрагирует функции некоторых существующих классов. Однако цель посредника состоит в том, чтобы абстрагировать любое общение между коллегами и обычно концентрировать функции, которые не принадлежат какому-либо одному объекту. Объект-коллега посредника знает посредника и общается с ним, а не напрямую общается с другими аналогичными объектами. В отличие от этого, шаблон фасада только абстрагирует интерфейсы объектов подсистемы, чтобы упростить их использование; он не определяет новые функции, и подсистема не знает о существовании фасада. Вообще говоря, требуется только один объект фасада, поэтому фасад
12. Краткое изложение
1) В соответствии с “принципом единой ответственности” Общая цель проектирования состоит в том, чтобы свести к минимуму связь и взаимозависимость между подсистемами. Одним из способов достижения этой цели является внедрение объекта фасада, который обеспечивает простой и единый доступ для доступа к подсистеме.
2) Шаблон внешнего вида также является воплощением “закона Димитара” , Вводя новый класс внешнего вида, сложность исходной системы может быть уменьшена Класс внешнего вида выступает в качестве “третьей стороны” между классом клиента и классом подсистемы, В то же время степень связи между классом клиента и классом подсистемы снижается . Шаблон внешнего вида является мощным оружием для реализации рефакторинга кода в соответствии с требованиями “Закона Димитара”.
3) Режим внешнего вида Требуется, чтобы связь между внешней и внутренней частями подсистемы осуществлялась через единый объект внешнего вида. Класс внешнего вида разделяет внутреннюю сложность клиента и подсистемы, так что клиенту нужно иметь дело только с объектом внешнего вида, но не со многими объектами в подсистеме. 4) Режим внешнего вида значительно повышает удобство использования клиента, так что клиенту не нужно заботиться о деталях подсистемы и он может вызывать соответствующие функции через роль внешнего вида. 5) Не пытайтесь добавить новое поведение в подсистему через класс внешнего вида и не добавляйте новое поведение в подсистему, наследовав класс внешнего вида. Это неправильно. Цель шаблона внешнего вида состоит в том, чтобы обеспечить централизованный и упрощенный канал связи для подсистемы, а не добавлять в подсистему новые модели поведения. Добавление нового поведения должно быть реализовано путем изменения исходной подсистемы
13. Расширение шаблона
Система имеет несколько классов внешнего вида: В режиме оболочки обычно требуется только один класс внешнего вида, и существует только один экземпляр этого класса фасада, другими словами, это Одноэлементный класс . Во многих случаях для экономии системных ресурсов класс внешнего вида обычно разрабатывается как одноэлементный класс . Конечно, это не означает, что во всей системе существует только один класс внешнего вида, В системе может быть разработано несколько классов внешнего вида., и каждый класс внешнего вида отвечает за взаимодействие с некоторыми конкретными подсистемами Для предоставления пользователям соответствующих бизнес-функций. Не пытайтесь добавить новое поведение в подсистему с помощью классов внешнего вида: Не добавляйте новое поведение в подсистему, наследовав класс фасада. Это ошибка . Цель шаблона внешнего вида состоит в том, чтобы обеспечить централизованный и упрощенный канал связи для подсистемы, а не добавлять в подсистему новые модели поведения. Добавление нового поведения
UML:
Подробнее о содержании, связанном с PHP заинтересованные читатели могут ознакомиться с этой темой сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Навыки работы с массивом PHP (массив)”, “Вводный курс по основному синтаксису PHP”, “Краткое описание операций и использования операторов PHP”, “Краткое описание использования символьной строки (строки) PHP”, “Руководство по вводу в эксплуатацию базы данных PHP + MySQL” и “Общая работа с базой данных PHP” Краткое описание навыков написания
Я надеюсь, что эта статья поможет вам в программировании на PHP.