Разделы презентаций


Введение в паттерны проектирования

Содержание

План лекцииПовторное использование кодаПаттерны проектированияПорождающие паттерныSingletonFactory MethodСтруктурные паттерныAdapterDecoratorProxyПаттерны поведенияIteratorObserver

Слайды и текст этой презентации

Слайд 1Введение в паттерны проектирования
Занятие 13

Введение в паттерны проектированияЗанятие 13

Слайд 2План лекции
Повторное использование кода
Паттерны проектирования
Порождающие паттерны
Singleton
Factory Method
Структурные паттерны
Adapter
Decorator
Proxy
Паттерны поведения
Iterator
Observer

План лекцииПовторное использование кодаПаттерны проектированияПорождающие паттерныSingletonFactory MethodСтруктурные паттерныAdapterDecoratorProxyПаттерны поведенияIteratorObserver

Слайд 3Повторное использование кода
Использование кода существующих приложений для создания новых приложений
Принципы

создания хорошего повторно используемого кода
Модульность (modularity)
Слабая связность (low coupling)
Высокая сфокусированность

(high cohesion)
Сокрытие информации (information hiding)
Разделение ответственности (separation of concerns)
Примеры повторного использования
«Копипаста» (copy-and-paste)
Библиотеки (software libraries)
Паттерны проектирования (design patterns)
Фреймворки (software frameworks)
Повторное использование кодаИспользование кода  существующих приложений  для создания новых приложенийПринципы создания хорошего  повторно используемого

Слайд 4Механизмы повторного использования в ООП
Наследование
Повторное использование родительского типа и/или реализации
Определяется

статически
Нарушает инкапсуляцию
Композиция
Повторное использование кода используемых классов
Определяется динамически
Решение представляет собой совокупность

взаимодействующих объектов и может быть изменено путём замены объекта
Шаблоны
Повторное использование реализации с частичным нарушением типа
Определяется статически
Типы и объекты требуют спецификации типов-параметров
Механизмы повторного использования в ООПНаследованиеПовторное использование родительского типа и/или реализацииОпределяется статическиНарушает инкапсуляциюКомпозицияПовторное использование кода используемых классовОпределяется динамическиРешение

Слайд 5Делегирование
Один объект в части своей реализации полагается на другой объект
Средство

обеспечения композиции
Программа становится тяжелее для понимания




При написании кода предпочитайте композицию

наследованию класса
ДелегированиеОдин объект в части  своей реализации полагается  на другой объектСредство обеспечения композицииПрограмма становится тяжелее для

Слайд 6Рекомендации по написанию повторно-используемого кода
Программируйте в соответствии с интерфейсом, а

не реализацией

Не объявляйте переменные как экземпляры конкретных классов. Вместо этого

придерживайтесь интерфейса, определенного абстрактным типом

Создавая в системе объекты конкретных классов, используйте порождающие паттерны проектирования
Рекомендации по написанию повторно-используемого кодаПрограммируйте в соответствии  с интерфейсом, а не реализациейНе объявляйте переменные как экземпляры

Слайд 7Причины перепроектирования
При создании объекта явно указывается класс
Зависимость от конкретных операций
Зависимость

от аппаратной и программной платформ
Зависимость от представления или реализации объекта
Зависимость

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

Слайд 8Фреймворки
Фреймворк (Framework, каркас) – это набор взаимодействующих классов, составляющих повторно

используемое проектное решение для конкретного класса программ
Диктует определенную структуру приложения

или модуля
Определяет общую структуру, ее разделение на классы и объекты, основные функции тех и других, методы взаимодействия потоков и классов, потоки управления
ФреймворкиФреймворк (Framework, каркас) – это набор взаимодействующих классов, составляющих повторно используемое проектное решение для конкретного класса программДиктует

Слайд 9Паттерны проектирования
Паттерн проектирования (Design Pattern, образец проектирования, шаблон проектирования) –

описание взаимодействия объектов и классов, адаптированных для решения общей задачи

проектирования в конкретном контексте
Паттерн проектирования именует, абстрагирует и идентифицирует ключевые аспекты структуры общего решения, которые и позволяют применить его для создания повторно используемого проектного решения
Паттерны проектированияПаттерн проектирования  (Design Pattern,  образец проектирования,  шаблон проектирования) –  описание взаимодействия

Слайд 10Паттерны в ООП
Результат проектирования на уровне ООП – распределение ответственностей

и активностей по классам
Паттерн – именованная конфигурация распределения ответственности по

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

Слайд 11Фреймворки vs Паттерны
Паттерны проектирования более абстрактны, чем фреймворки
Как архитектурные элементы

паттерны проектирования мельче, чем фреймворки
Паттерны проектирования менее специализированны, чем фреймворки

Фреймворки vs ПаттерныПаттерны проектирования более абстрактны, чем фреймворкиКак архитектурные элементы паттерны проектирования мельче, чем фреймворкиПаттерны проектирования менее

Слайд 12Описания паттернов
GoF Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides

(1995). Design Patterns: Elements of Reusable Object-Oriented Software
POSA1 Frank Buschmann, Regine

Meunier, Hans Rohnert, Peter Sommerlad (1996). Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
POSA2 Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann (2000). Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects
PoEAA Martin Fowler (2002). Patterns of Enterprise Application Architecture

Описания паттерновGoF Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable

Слайд 13Порождающие паттерны
Abstract Factory – Абстрактная фабрика
Builder – Строитель
Factory Method

– Фабричный метод
Prototype – Прототип
Singleton – Одиночка

Порождающие паттерныAbstract Factory – Абстрактная фабрика Builder – СтроительFactory Method – Фабричный методPrototype – ПрототипSingleton – Одиночка

Слайд 14Singleton
Название и классификация Одиночка – паттерн, порождающий объекты
Назначение Гарантирует, что у класса

есть только один экземпляр, и предоставляет к нему глобальную точку доступа
Применимость
Должен

быть ровно один экземпляр некоторого класса, легко доступный всем клиентам
Единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода
SingletonНазвание и классификация Одиночка – паттерн, порождающий объектыНазначение Гарантирует, что у класса есть только один экземпляр, и

Слайд 15Singleton: структура
Структура



Участники
Singleton – одиночка, Определяет операцию Instance , которая позволяет

клиентам получать доступ к единственному экземпляру

Singleton: структураСтруктураУчастникиSingleton – одиночка, Определяет операцию Instance , которая позволяет клиентам получать доступ к единственному экземпляру

Слайд 16Factory Method
Название и классификация Фабричный метод – паттерн, порождающий объекты
Назначение Определяет интерфейс

для создания объекта, но оставляет подклассам решение о том, какой

класс инстанцировать. Фабричный метод позволяет классу делегировать инстанцирование в подклассы
Известен также под именем Virtual Constructor
Factory MethodНазвание и классификация Фабричный метод – паттерн, порождающий объектыНазначение Определяет интерфейс для создания объекта, но оставляет

Слайд 17Factory Method Мотивация

Factory Method Мотивация

Слайд 18Factory Method Применимость
Используйте паттерн фабричный метод, когда:
классу заранее неизвестно, объекты каких

классов ему нужно создавать
класс спроектирован так, чтобы объекты, которые он

создает, специфицировались подклассами
класс делегирует свои обязанности одному из нескольких вспомогательных подклассов, и вы планируете локализовать знание о том, какой класс принимает эти обязанности на себя
Factory Method ПрименимостьИспользуйте паттерн фабричный метод, когда:классу заранее неизвестно, объекты каких классов ему нужно создаватькласс спроектирован так,

Слайд 19Factory Method Структура

Factory Method Структура

Слайд 20Factory Method Особенности
Две основных разновидности:
класс Сгeator – абстрактный
Creator – конкретный класс,

в котором по умолчанию есть реализация фабричного метода
Параметризованные фабричные методы

Factory Method ОсобенностиДве основных  разновидности:класс Сгeator – абстрактныйCreator – конкретный класс,  в котором по умолчанию

Слайд 21Структурные паттерны

Структурные паттерны

Слайд 22Adapter
Название и классификация Адаптер – паттерн, структурирующий классы и объекты
Назначение Преобразует интерфейс

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

работу классов с несовместимыми интерфейсами, которая без него была бы невозможна
Известен также под именем Wrapper
AdapterНазвание и классификация Адаптер – паттерн, структурирующий классы и объектыНазначение Преобразует интерфейс одного класса в интерфейс другого,

Слайд 23Adapter Применимость
Применяйте адаптер классов, когда:
хотите использовать существующий класс, но его

интерфейс не соответствует вашим потребностям
собираетесь создать повторно используемый класс, который

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

Слайд 24Adapter (класса)
Неприменим, если требуется адаптировать не только конкретный класс, но

и его подклассы
Возможно изменение в адаптере операций адаптируемого класса
Вводится только

один объект (непосредственно адаптера)
Adapter (класса)Неприменим, если требуется адаптировать не только конкретный класс, но и его подклассыВозможно изменение в адаптере операций

Слайд 25Adapter (объекта)
Один адаптер может работать со множеством адаптируемых объектов, включая

объекты подклассов
Затруднено замещение операций адаптируемого класса

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

Слайд 26Decorator
Название и классификация Декоратор – паттерн, структурирующий объекты
Назначение Динамически добавляет объекту новые

обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности
Известен

также под именем Wrapper
DecoratorНазвание и классификация Декоратор – паттерн, структурирующий объектыНазначение Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению

Слайд 27Decorator Мотивация

Decorator Мотивация

Слайд 28Decorator Применимость
Используйте паттерн декоратор:
для динамического, прозрачного для клиентов добавления обязанностей объектам
для

реализации обязанностей, которые могут быть сняты с объекта
когда расширение путем

порождения подклассов по каким-то причинам неудобно или невозможно
Decorator ПрименимостьИспользуйте паттерн декоратор:для динамического, прозрачного для клиентов добавления обязанностей объектамдля реализации обязанностей, которые могут быть сняты

Слайд 29Decorator Структура

Decorator Структура

Слайд 30Decorator Особенности
Большая гибкость, чем у статического наследования
Создание цепочек декораторов, в том

числе из одних и тех же в одной цепочке
Позволяет избежать

перегруженных функциями классов на верхних уровнях иерархии
Декоратор и его компонент не идентичны
Множество мелких объектов
Decorator ОсобенностиБольшая гибкость, чем у статического наследованияСоздание цепочек декораторов, в том числе из одних и тех же

Слайд 31Decorator Особенности
Соответствие интерфейсов декоратора и декорируемого объекта
Возможное отсутствие абстрактного класса декоратора
Облегчение,

по возможности, декорируемого класса
Изменяется «облик», а не внутренне устройство объекта

Decorator ОсобенностиСоответствие интерфейсов декоратора и декорируемого объектаВозможное отсутствие абстрактного класса декоратораОблегчение, по возможности,  декорируемого классаИзменяется «облик»,

Слайд 32Proxy
Название и классификация Заместитель – паттерн, структурирующий объекты
Назначение Является суррогатом другого объекта

и контролирует доступ к нему
Известен также под именем Surrogate

ProxyНазвание и классификация Заместитель – паттерн, структурирующий объектыНазначение Является суррогатом  другого объекта  и контролирует доступ

Слайд 33Proxy
Мотивация




Применимость Заместитель применим во всех случаях, когда возникает необходимость сослаться на

объект более изощренно, чем это возможно, если использовать простую ссылку

ProxyМотивацияПрименимость Заместитель применим во всех случаях, когда возникает необходимость сослаться на объект более изощренно, чем это возможно,

Слайд 34Proxy Применимость
Удаленный заместитель предоставляет локального представителя вместо объекта, находящегося в другом

адресном пространстве

Виртуальный заместитель создает тяжелые объекты по требованию

Защищающий заместитель контролирует

доступ к исходному объекту
Proxy ПрименимостьУдаленный заместитель  предоставляет локального представителя вместо объекта, находящегося в другом адресном пространствеВиртуальный заместитель  создает

Слайд 35Proxy Применимость
Умная ссылка замена обычного указателя:
подсчет числа ссылок на реальный объект
загрузка

объекта в память при первом обращении к нему
проверка и установка

блокировки на реальный объект при обращении к нему, чтобы никакой другой объект не смог в это время изменить его
Proxy ПрименимостьУмная ссылка  замена обычного указателя:подсчет числа ссылок на реальный объектзагрузка объекта в память при первом

Слайд 36Proxy Структура
Диаграмма объектов

Proxy СтруктураДиаграмма объектов

Слайд 37Паттерны поведения

Паттерны поведения

Слайд 38Паттерны поведения

Паттерны поведения

Слайд 39Iterator
Название и классификация Итератор – паттерн поведения объектов
Назначение Предоставляет способ последовательного доступа

ко всем элементам составного объекта, не раскрывая его внутреннего представления
Известен

также под именем Cursor
IteratorНазвание и классификация Итератор – паттерн поведения объектовНазначение Предоставляет способ последовательного доступа ко всем элементам составного объекта,

Слайд 40Iterator Мотивация

Iterator Мотивация

Слайд 41Iterator Применимость
Используйте итератор:
Для доступа к содержимому агрегированных объектов без раскрытия их

внутреннего представления
Для поддержки нескольких активных обходов одного и того же

агрегированного объекта
Для предоставления единообразного интерфейса с целью обхода различных агрегированных структур (для поддержки полиморфной итерации)
Iterator ПрименимостьИспользуйте итератор:Для доступа к содержимому агрегированных объектов без раскрытия их внутреннего представленияДля поддержки нескольких активных обходов

Слайд 42Iterator Структура

Iterator Структура

Слайд 43Iterator
Особенности
Поддерживает различные виды обхода агрегата
Итераторы упрощают интерфейс класса-агрегата
Одновременно для данного

агрегата может быть активно несколько обходов

Реализация
Какой участник управляет итерацией?
Внутренний
Внешний
Насколько итератор

устойчив?
Дополнительные операции итератора
IteratorОсобенностиПоддерживает различные виды обхода агрегатаИтераторы упрощают интерфейс класса-агрегатаОдновременно для данного агрегата может быть активно несколько обходовРеализацияКакой участник

Слайд 44Observer
Название и классификация Наблюдатель – паттерн поведения объектов
Назначение Определяет зависимость типа “один ко

многим” между объектами таким образом, что при изменении состояния одного

объекта все зависящие от него оповещаются об этом и автоматически обновляются
Известен также под именем Dependents, Publish-Subscribe, Listener
ObserverНазвание и классификация Наблюдатель – паттерн поведения объектовНазначение Определяет зависимость типа  “один ко многим” между объектами

Слайд 45Observer Применимость
Когда у абстракции есть два аспекта, один из которых зависит

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

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

Слайд 46Observer Структура

Observer Структура

Слайд 47Observer Отношения

Observer Отношения

Слайд 48Observer Результаты
Абстрактная связанность субъекта и наблюдателя
Поддержка широковещательных коммуникаций
Неожиданные обновления
Простой протокол обновления

не содержит никаких сведений о том, что именно изменилось в

субъекте
Observer РезультатыАбстрактная связанность субъекта и наблюдателяПоддержка широковещательных коммуникацийНеожиданные обновленияПростой протокол обновления не содержит никаких сведений о том,

Слайд 49Observer Реализация
Отображение субъектов на наблюдателей
Наблюдение более чем за одним субъектом
Инициатор обновления
Модели

вытягивания и проталкивания
Явное специфицирование представляющих интерес модификаций

Observer РеализацияОтображение субъектов на наблюдателейНаблюдение более чем за одним субъектомИнициатор обновленияМодели вытягивания и проталкиванияЯвное специфицирование представляющих интерес

Слайд 50Спасибо за внимание!

Спасибо за внимание!

Слайд 51Дополнительные источники
Гамма, Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования [Текст] /

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. – СПб.

: Питер, 2007. – 366 с.
Фримен, Э. Паттерны проектирования [Текст] / Эрик Фримен, Элизабет Робсон, Берт Бейтс, Кэти Сьерра. – СПб. : Питер, 2011. – 656 с.
Обзор паттернов проектирования [Электронный ресурс]. – Режим доступа: http://citforum.ru/SE/project/pattern/index.shtml, дата доступа: 21.10.2011.
Объектно-ориентированное проектирование, паттерны проектирования (шаблоны) [Электронный ресурс]. – Режим доступа: http://www.javenue.info/themes/ood/, дата доступа: 21.10.2011.
Обзор паттернов проектирования [Электронный ресурс]. – Режим доступа: http://www.firststeps.ru/theory/patt/pattern1.html, дата доступа: 21.10.2011.
Дополнительные источникиГамма, Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования [Текст] / Э. Гамма, Р. Хелм, Р. Джонсон, Дж.

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика