Архитектура информационных систем
7.99M
Категория: ПрограммированиеПрограммирование

Лекция 7 - Паттерны

1. Архитектура информационных систем

Степаныч З.А.
ст. преподаватель кафедры
Информационных систем ИКИТ СФУ

2.

Паттерн
Зарекомендовавшее себя
решение определённой
чётко обозначенной
проблемы, которое
принято сообществом
программистов как
стандартное решение
данной проблемы

3.

УЖЕ ИЗВЕСТНЫЕ

4.

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

5.

Фасад

6.

Фасад

7.

Фасад

8.

Паттерн репозиторий
(Repository)
Репозиторий – класс, что инкапсулирует
необходимую для доступа к источником
данных логику. Этот паттерн ориентирован
на работу с доменными объектами,
разделяя технологию доступа к источнику
данных и модель предметной области.

9.

Паттерн репозиторий
(Repository)

10.

Паттерн репозиторий
(Repository)

11.

Паттерн единица работы
(Unit of Work)
Паттерн Unit of Work позволяет
упростить работу с различными
репозиториями и дает уверенность, что
все репозитории будут использовать
один и тот же контекст данных.

12.

Паттерн единица работы
(Unit of Work)
В более сложных вариациях он также
управляет высвобождением памяти,
позволяет «накапливать» изменения в
разных репозиториях и только потом
отправлять их в базу одной транзакцией
или вообще откатить.

13.

Паттерн единица работы
(Unit of Work)

14.

Паттерн «Одиночка» (Singleton)
Паттерн гарантирует, что для определенного
типа будет создан только один экземпляр

15.

Паттерн «Одиночка» (Singleton)

16.

Паттерн «Одиночка» (Singleton)

17.

Паттерн «Одиночка»
(Singleton)
+
Гарантия
единственного
экземпляра
Единая точка
редактирования кода,
создающего экземпляр
Удобство создания
экземпляров в любом
месте
• Неочевидность способа
создания экземпляра
• Есть обходные пути,
позволяющие всё же
создать второй
экземпляр
• Паттерн в исходной
форме не работает в
многопоточных и
асинхронных
приложениях
• Статика

18.

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

19.

Паттерн наблюдатель

20.

Паттерн «Команда»
Программируем часть умного дома,
которая будет отвечать за включение и
выключение света и за открытие и
закрытие блэкаут панелей на окнах.
Мы можем включать и выключать свет
Мы можем открывать и закрывать окна
Мы можем отменять команды

21.

Паттерн «Команда»

22.

Паттерн «Команда»

23.

Паттерн «Команда»

24.

Паттерн «Команда»

25.

Новинка
Первые паттерны программирования появились при
разработке MVC и спец-языка программирования SmallTalk в 87
году (сама разработка началась ещё в 70-х).
Сам язык стал основой ООП в его текущем виде и множеству
других языков, в том числе и не высокоуровневых
Стали популярны благодаря банде четырёх (GoF).
Гуф

26.

Паттерны. Типы.
Фундаментальные Порождающие
Интерфейсы и
шаблоны делегирования
Singleton
Поведенческие
Структурные
Наблюдатель
Facade

27.

Порождающие паттерны
Шаблоны проектирования, которые абстрагируют
процесс инстанцирования (создания).
Они позволяют сделать систему независимой от
способа создания, композиции и представления
объектов.
Шаблон, порождающий классы, использует
наследование, чтобы изменять создаваемый класс
Шаблон, порождающий объекты, делегирует
создание другому объекту.
Строитель
Фабрики
Прототип
Фабричный метод
Singleton

28.

Простая фабрика
Предоставляет единую
точку создания
объектов разного
типа.

29.

Простая фабрика

30.

Простая фабрика

31.

Фабричный метод
Является дополнением к
паттерну «Фабрика».
Позволяет создать
семейство фабрик, где
для каждого конкретного
типа создаётся один из
вариантов его
наследников

32.

Фабричный метод

33.

Фабричный метод

34.

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

35.

Стратегия
Определяет семейство
алгоритмов,
инкапсулирует их
взаимозаменяемость.
Позволяет
модифицировать
алгоритмы независимо от
их использования на
стороне клиента.

36.

Стратегия

37.

Стратегия

38.

Шаблонный метод
Определяет «скелет»
некоторого алгоритма в
методе, оставляя
определение реализации
частей алгоритма
субклассам. Субклассы
могут переопредялть
некоторые части алгоритма
без изменения его
структуры.

39.

Шаблонный метод

40.

Шаблонный метод

41.

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

42.

Декоратор
Динамически наделяет
объект новым
функционалом и
является гибкой
альтернативой
субклассирования в
области расширения
функционала.

43.

Декоратор

44.

Декоратор

45.

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

46.

Адаптер

47.

Посткриптум
Понимание: Данные, информация, знание и понимание
дают нам возможность эффективно расходовать ресурсы
(efficiency) на получение промежуточных результатов в
продвижении к цели, делать всё правильно.
Мудрость (wisdom) связана с эффективностью достижения самой
конечной цели (effectiveness), т.е. с тем, стремились ли мы сделать
правильную вещь. Мудрость выражается в оценивании
полученного конечного результата. Она придаёт человеку
готовность идти на краткосрочные жертвы ради успешного
достижения цели в долгосрочной перспективе
English     Русский Правила