Опубликован: 12.10.2017 | Уровень: для всех | Доступ: платный
Лекция 5:

Структурные шаблоны проектирования

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >

Фасад

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

Назначение паттерна "Фасад"– упростить работу с существующей системой, определив собственный интерфейс обращения к ней. При этом определяемый интерфейс должен использовать только определенное множество функций системы или организовать взаимодействие с ней неким специфическим образом.

Реализация этого шаблона определяет точку взаимодействия с подсистемой – фасадный объект, обеспечивающий общий интерфейс, взаимодействующий с компонентами.

Реализация других компонентов подсистемы закрыта и не видна внешним компонентам. Фасадный объект обеспечивает реализацию паттерна "Устойчивый к изменениям".

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

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

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

Подобная реализация может быть использована для обеспечения следующих требований:

  • Контроль за использованием системы:
    • Вынуждая пользователей все обращения к системе выполнять только через фасад, легко можно контролировать их доступ к ней.
  • Упрощение замены системы:
    • В будущем может потребоваться заменить существующую систему новой. Для этих целей "Фасад" может использоваться как место агрегации наиболее полезных методов заменяемой системы с последующим переносом в новую.
  • Представление базовой системы как закрытого компонента.

В основном шаблон "Фасад" используется в тех случаях, когда необходим новый способ взаимодействия с системой – более простой в сравнении с уже существующим.

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

Применение шаблона "Фасад" наиболее востребовано в следующих условиях:

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

Заключение о структурных шаблонах

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

Структурные шаблоны проектирования решают задачу компоновки системы на основе классов и объектов. При этом могут использоваться следующие механизмы:

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

Структурные паттерны описывают создание сложных и комплексных объектов, оптимизируют взаимодействие между разными системными компонентами.

Выводы

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

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

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

В следующей главе мы приступим к изучению не менее интересных поведенческих паттернов.

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Канагат Дюсекеев
Канагат Дюсекеев
Казахстан, Караганды, Карагандинский экономический университет, 2009
Алексей Мохов
Алексей Мохов
Россия, г. Самара