2. Шаблоны проектирования в ООП
При создании программных систем
перед разработчиками часто встает
проблема выбора тех или иных
проектных решений.
В этих случаях на помощь приходят
шаблоны проектирования.
3. История
В 1994 был опубликован каталог,
включающий 23 шаблона объектно-
ориентированного проектирования.
Этот каталог стал настолько популярен,
что его часто упоминается как шаблоны
GoF
("Gang of Four" или "банда четырех" по
числу авторов).
4. Взаимосвязи между шаблонами
Некоторые шаблоны
естественным образом подходят
друг к другу.
Один шаблон вытекает из другого.
Некоторые шаблоны похожи или
альтернативны
Новые шаблоны можно
обнаружить и задокументировать
9. Одиночка
Singleton (Одиночка) – это один из
самых распростроненных патернов.
Задача этого шаблона ограничить
количество экземпляров некоторого
класса в пределах приложения.
10. Прототип
Prototype (Пртотип) – задаёт виды
создаваемых объектов с помощью
экземпляра-прототипа и создаёт
новые объекты путём копирования
этого прототипа.
11. Строитель
Builder (строитель) - отделяет
процесс создания некоторого
сложного объекта от его
представления. Таким образом,
можно получать различные
представления объекта, используя
один и тот же "технологический"
процесс.
12. Фабричный метод
Factory Method - это паттерн
создания объектов. Данный шаблон
проектирования предоставляет
интерфейс для создания
экземпляров некоторого класса. В
момент создания наследники могут
определить, какой класс
инстанциировать.
13. Абстрактная фабрика
Абстрактная фабрика -
предоставляет интерфейс для
создания целых семейств объектов
без указания конкретных классов.
Объекты каждого семейства
должны быть логически связаны
между собой.
14. Абстрактная фабрика
Используйте паттерн Абстрактная
Фабрика в таких случаях:
• система не должна зависеть от
способа создания объектов;
• система работает с одним из
нескольких семейств объектов;
• объекты внутри семейства
взаимосвязаны.
17. Фасад
Шаблон фасад (англ. Facade) —
позволяет скрыть сложность
системы путём сведения всех
возможных внешних вызовов к
одному объекту, делегирующему их
соответствующим объектам
системы.
20. Компоновщик
Компоновщик (англ. Composite
pattern) — объединяет объекты в
древовидную структуру для
представления иерархии от
частного к целому. Компоновщик
позволяет клиентам обращаться к
отдельным объектам и к группам
объектов одинаково.
21. Заместитель
Заместитель (англ. Proxy) —
предоставляет объект, который
контролирует доступ к другому
объекту, перехватывая все вызовы
(выполняет функцию контейнера).
22. Мост
Шаблон мост (англ. Bridge) —,
используемый используется чтобы
«разделять абстракцию и
реализацию так, чтобы они могли
изменяться независимо
24. Декаратор
Декоратор (англ. Decorator) —
предназначен для динамического
подключения дополнительного
поведения к объекту. Шаблон
Декоратор предоставляет гибкую
альтернативу практике создания
подклассов с целью расширения
функциональности.
26. Наблюдатель англ. Observer
Наблюдатель — поведенческий
шаблон проектирования. Также
известен как «подчинённые»
(Dependents), «издатель-
подписчик» (Publisher-Subscriber).
27. Наблюдатель англ. Observer
Наблюдатель - создает механизм
у класса, который позволяет
получать экземпляру объекта этого
класса оповещения от других
объектов об изменении их
состояния, тем самым наблюдая за
ними
28. В каких случаях используется?
Если один объект должен передавать
сообщения другим объектам, но при
этом он не может или не должен знать
об их внутреннем устройстве;
В случае если при изменении одного
объекта необходимо изменять другие
объекты;
29. В каких случаях используется?
Для предотвращения сильных
связей между объектами системы;
Для наблюдения за состоянием
определенных объектов системы;
30. Хранитель
Хранитель (англ. Memento) — позволяет,
не нарушая инкапсуляцию,
зафиксировать и сохранить внутреннее
состояние объекта так, чтобы позднее
восстановить его в это состояние.
31. Стратегия
Стратегия (Strategy) известен также
под названием Policy.
Суть его состоит в том, чтобы
создать несколько моделей
поведения (стратегий) для одного
объекта и вынести их в отдельные
классы.
32. Итератор
Итератор - это шаблон
программирования позволяющий
получить доступ к элементам
любой коллекции, не вникания в
суть ее реализации.
33. Команда
Команда (англ. Command) —
используеться при объектно-
ориентированном
программировании,
представляющий действие. Объект
команды заключает в себе само
действие и его параметры.