пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Структурные шаблоны. Определение, применение, примеры.

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

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

К структурным шаблонам относятся:

1)   Адаптер. Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна.

57_1.png

Достоинства: Паттерн Adapter позволяет повторно использовать уже имеющийся код, адаптируя его несовместимый интерфейс к виду, пригодному для использования.

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

2)Декоратор - Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности.

57_2.png

3)Заместитель. Является суррогатом другого объекта и контролирует доступ к нему.

57_3.png

4) Компоновщик. Компонует объекты в древовидные структуры для представления иерархий часть-целое. Позволяет клиентам единообразно трактовать индивидуальные и составные объекты.

57_4.png

Достоинства паттерна Composite:

  • В систему легко добавлять новые примитивные или составные объекты, так как паттерн Composite использует общий базовый класс Component.
  • Код клиента имеет простую структуру – примитивные и составные объекты обрабатываются одинаковым образом.
  • Паттерн Composite позволяет легко обойти все узлы древовидной структуры.

Недостатки паттерна Composite:

  • Неудобно осуществить запрет на добавление в составной объект Composite объектов определенных типов.

5)Мост. Отделяет абстракцию от ее реализации так, чтобы то и другое можно было изменять независимо.

57_5.png

Достоинства паттерна Bridge:

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

6)Приспособленец. Использует разделение для эффективной поддержки множества мелких объектов.

57_6.png

7)Фасад. Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.

57_7.png


30.01.2019; 13:34
хиты: 472
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь