🗊Презентация Паттерны проектирования (Design patterns)

Нажмите для полного просмотра!
Паттерны проектирования (Design patterns), слайд №1Паттерны проектирования (Design patterns), слайд №2Паттерны проектирования (Design patterns), слайд №3Паттерны проектирования (Design patterns), слайд №4Паттерны проектирования (Design patterns), слайд №5Паттерны проектирования (Design patterns), слайд №6Паттерны проектирования (Design patterns), слайд №7Паттерны проектирования (Design patterns), слайд №8Паттерны проектирования (Design patterns), слайд №9Паттерны проектирования (Design patterns), слайд №10Паттерны проектирования (Design patterns), слайд №11Паттерны проектирования (Design patterns), слайд №12Паттерны проектирования (Design patterns), слайд №13Паттерны проектирования (Design patterns), слайд №14Паттерны проектирования (Design patterns), слайд №15Паттерны проектирования (Design patterns), слайд №16Паттерны проектирования (Design patterns), слайд №17Паттерны проектирования (Design patterns), слайд №18Паттерны проектирования (Design patterns), слайд №19Паттерны проектирования (Design patterns), слайд №20Паттерны проектирования (Design patterns), слайд №21Паттерны проектирования (Design patterns), слайд №22Паттерны проектирования (Design patterns), слайд №23Паттерны проектирования (Design patterns), слайд №24Паттерны проектирования (Design patterns), слайд №25Паттерны проектирования (Design patterns), слайд №26Паттерны проектирования (Design patterns), слайд №27Паттерны проектирования (Design patterns), слайд №28Паттерны проектирования (Design patterns), слайд №29Паттерны проектирования (Design patterns), слайд №30Паттерны проектирования (Design patterns), слайд №31Паттерны проектирования (Design patterns), слайд №32Паттерны проектирования (Design patterns), слайд №33Паттерны проектирования (Design patterns), слайд №34Паттерны проектирования (Design patterns), слайд №35Паттерны проектирования (Design patterns), слайд №36Паттерны проектирования (Design patterns), слайд №37Паттерны проектирования (Design patterns), слайд №38Паттерны проектирования (Design patterns), слайд №39

Содержание

Вы можете ознакомиться и скачать презентацию на тему Паттерны проектирования (Design patterns). Доклад-сообщение содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





Паттерны проектирования (Design patterns)
Описание слайда:
Паттерны проектирования (Design patterns)

Слайд 2





Что такое паттерны (шаблоны) проектирования?
Эффективные способы решения характерных задач проектирования
Обобщенное описание решения задачи, которое можно использовать в различных ситуациях
ОО паттерны проектирования часто показывают отношения и взаимодействия между классами и объектами
Алгоритмы не являются паттернами, т.к. решают задачу вычисления, а не программирования
Описание слайда:
Что такое паттерны (шаблоны) проектирования? Эффективные способы решения характерных задач проектирования Обобщенное описание решения задачи, которое можно использовать в различных ситуациях ОО паттерны проектирования часто показывают отношения и взаимодействия между классами и объектами Алгоритмы не являются паттернами, т.к. решают задачу вычисления, а не программирования

Слайд 3





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

Слайд 4





Порождающие паттерны
Описание слайда:
Порождающие паттерны

Слайд 5





Порождающие паттерны проектирования
Абстрагируют процесс инстанцирования объектов
Список паттернов
Абстрактная фабрика (Abstract Factory)
Строитель (Builder)
Фабричный метод (Factory method)
Прототип (Prototype)
Одиночка (Singleton)
Описание слайда:
Порождающие паттерны проектирования Абстрагируют процесс инстанцирования объектов Список паттернов Абстрактная фабрика (Abstract Factory) Строитель (Builder) Фабричный метод (Factory method) Прототип (Prototype) Одиночка (Singleton)

Слайд 6





Abstract Factory (Абстрактная фабрика)
Описание слайда:
Abstract Factory (Абстрактная фабрика)

Слайд 7





Назначение паттерна «Абстрактная фабрика»
Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов
Описание слайда:
Назначение паттерна «Абстрактная фабрика» Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов

Слайд 8





Паттерн «Абстрактная фабрика»
Шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы
Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов
Описание слайда:
Паттерн «Абстрактная фабрика» Шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов

Слайд 9





Реализация паттерна
Паттерн «Абстрактная фабрика» реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания  абстрактных объектов-продуктов
На основе данного класса создается один или несколько классов конкретных фабрик, создающих   конкретные объекты-продукты
Описание слайда:
Реализация паттерна Паттерн «Абстрактная фабрика» реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания абстрактных объектов-продуктов На основе данного класса создается один или несколько классов конкретных фабрик, создающих конкретные объекты-продукты

Слайд 10





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

Слайд 11





Структура
Описание слайда:
Структура

Слайд 12





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

Слайд 13





Иерархия классов
Описание слайда:
Иерархия классов

Слайд 14





Абстрактные и конкретные элементы управления
Описание слайда:
Абстрактные и конкретные элементы управления

Слайд 15





Абстрактная и конкретные фабрики
Описание слайда:
Абстрактная и конкретные фабрики

Слайд 16





Преимущества использования паттерна «Абстрактная фабрика»
Изоляция конкретных классов продуктов
Фабрика изолирует клиента от деталей реализации классов продуктов
Имена изготавливаемых классов известны только конкретной фабрике, в коде клиента они не упоминаются
Клиенты манипулируют экземплярами продуктов только через их абстрактные интерфейсы
Упрощение замены семейств продуктов
Приложение может изменить семейство продуктов просто подставив новую конкретную фабрику
Гарантия сочетаемости продуктов
Если продукты спроектированы для совместного использования, важно чтобы в каждый момент времени приложение работало с продуктами единственного семейста
Описание слайда:
Преимущества использования паттерна «Абстрактная фабрика» Изоляция конкретных классов продуктов Фабрика изолирует клиента от деталей реализации классов продуктов Имена изготавливаемых классов известны только конкретной фабрике, в коде клиента они не упоминаются Клиенты манипулируют экземплярами продуктов только через их абстрактные интерфейсы Упрощение замены семейств продуктов Приложение может изменить семейство продуктов просто подставив новую конкретную фабрику Гарантия сочетаемости продуктов Если продукты спроектированы для совместного использования, важно чтобы в каждый момент времени приложение работало с продуктами единственного семейста

Слайд 17





Недостатки паттерна «Абстрактная фабрика»
Трудность поддержания новых типов продуктов
Интерфейс абстрактной фабрики фиксирует набор продуктов, которые можно создать
Для поддержки новых продуктов необходимо расширить интерфейс фабрики, внеся изменения в класс AbstractFactory, а также во все его подклассы
Обход этого ограничения – передача идентификатора типа создаваемого продукта в методы фабрики, создающие продукты
Ограничение: создаваемые продукты должны поддерживать общий абстрактный интерфейс
Клиент не может различать типы продуктов и делать какие-либо предположения о них
Описание слайда:
Недостатки паттерна «Абстрактная фабрика» Трудность поддержания новых типов продуктов Интерфейс абстрактной фабрики фиксирует набор продуктов, которые можно создать Для поддержки новых продуктов необходимо расширить интерфейс фабрики, внеся изменения в класс AbstractFactory, а также во все его подклассы Обход этого ограничения – передача идентификатора типа создаваемого продукта в методы фабрики, создающие продукты Ограничение: создаваемые продукты должны поддерживать общий абстрактный интерфейс Клиент не может различать типы продуктов и делать какие-либо предположения о них

Слайд 18





Пример – фабрика, создающая элементы игрового поля
Описание слайда:
Пример – фабрика, создающая элементы игрового поля

Слайд 19





Builder (Строитель)
Описание слайда:
Builder (Строитель)

Слайд 20





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

Слайд 21





Область применения паттерна «Строитель»
Алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой 
Процесс конструирования должен обеспечивать различные представления конструируемого объекта
Описание слайда:
Область применения паттерна «Строитель» Алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой Процесс конструирования должен обеспечивать различные представления конструируемого объекта

Слайд 22





Структура
Описание слайда:
Структура

Слайд 23





Отношения между участниками паттерна
Клиент создает новый  объект «Распорядитель» (Director) и конфигурирует его новым объектом-строителем Builder
Распорядитель уведомляет строителя о необходимости построения очередной части продукта
Строитель обрабатывает запросы распорядителя и добавляет новые части к продукту
Клиент забирает продукт у строителя
Описание слайда:
Отношения между участниками паттерна Клиент создает новый объект «Распорядитель» (Director) и конфигурирует его новым объектом-строителем Builder Распорядитель уведомляет строителя о необходимости построения очередной части продукта Строитель обрабатывает запросы распорядителя и добавляет новые части к продукту Клиент забирает продукт у строителя

Слайд 24





Достоинства паттерна «Строитель»
Позволяет изменять внутреннее представление продукта
Распорядителю предоставляется абстрактный интерфейс Строителя, скрывающего структуру продукта и процесс сборки
Для изменения внутреннего представления достаточно определить новую реализацию Строителя
Изолирует код, реализующий конструирование и представление 
Клиенту не нужно знать о классах, задающих внутреннюю структуру продукта (в интерфейсе строителя они отсутствуют)
Дает более тонкий контроль над процессом конструирования 
Процесс построения продукта происходит не сразу, как в других порождающих паттернах, а шаг за шагом
Описание слайда:
Достоинства паттерна «Строитель» Позволяет изменять внутреннее представление продукта Распорядителю предоставляется абстрактный интерфейс Строителя, скрывающего структуру продукта и процесс сборки Для изменения внутреннего представления достаточно определить новую реализацию Строителя Изолирует код, реализующий конструирование и представление Клиенту не нужно знать о классах, задающих внутреннюю структуру продукта (в интерфейсе строителя они отсутствуют) Дает более тонкий контроль над процессом конструирования Процесс построения продукта происходит не сразу, как в других порождающих паттернах, а шаг за шагом

Слайд 25





Пример использования
В редакторе форматированного текстового документа необходимо реализовать возможность преобразования его в различные форматы
Plain text, HTML, RTF, PDF, DOC, DOCX
Список можно продолжить
Задача решается путем введения сущностей
Распорядитель - CFormattedTextReader
Строитель – CTextConverter
Конкретный Строитель – CHtmlConverter, CRTFConverter, CPlainTextConverter, CPDFConverter, …
Продукт – CPlainTextDocument, CHtmlDocument, CRTFDocument, CPDFDocument, …
Описание слайда:
Пример использования В редакторе форматированного текстового документа необходимо реализовать возможность преобразования его в различные форматы Plain text, HTML, RTF, PDF, DOC, DOCX Список можно продолжить Задача решается путем введения сущностей Распорядитель - CFormattedTextReader Строитель – CTextConverter Конкретный Строитель – CHtmlConverter, CRTFConverter, CPlainTextConverter, CPDFConverter, … Продукт – CPlainTextDocument, CHtmlDocument, CRTFDocument, CPDFDocument, …

Слайд 26





Иерархия классов
Описание слайда:
Иерархия классов

Слайд 27





Реализация сущности «Строитель»
Описание слайда:
Реализация сущности «Строитель»

Слайд 28





Реализация сущности «Распорядитель»
Описание слайда:
Реализация сущности «Распорядитель»

Слайд 29





Реализация клиента
Описание слайда:
Реализация клиента

Слайд 30





Factory Method (Фабричный метод)
Описание слайда:
Factory Method (Фабричный метод)

Слайд 31





Назначение паттерна «Фабричный метод»
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать
Фабричный метод позволяет классу делегировать инстанцирование подклассам
Альтернативное название паттерна – «Виртуальный конструктор»
Описание слайда:
Назначение паттерна «Фабричный метод» Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать Фабричный метод позволяет классу делегировать инстанцирование подклассам Альтернативное название паттерна – «Виртуальный конструктор»

Слайд 32





Структура
Описание слайда:
Структура

Слайд 33





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

Слайд 34





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

Слайд 35





Пример использования
Каркас приложения, позволяющего пользователю работать с различными типами документов
Основные абстракции в таком каркасе – классы CApplication и CDocument
CApplication – управляет созданием и открытием документов
CDocument – базовый абстрактный класс CDocument, основа для создания конкретных документов
Проблема – класс CApplication знает, в какой момент документ должен быть создан, но ему известно лишь об абстрактном классе CDocument, который инстанцировать нельзя
Паттерн «Фабричный метод» предлагает решение данной проблемы
Описание слайда:
Пример использования Каркас приложения, позволяющего пользователю работать с различными типами документов Основные абстракции в таком каркасе – классы CApplication и CDocument CApplication – управляет созданием и открытием документов CDocument – базовый абстрактный класс CDocument, основа для создания конкретных документов Проблема – класс CApplication знает, в какой момент документ должен быть создан, но ему известно лишь об абстрактном классе CDocument, который инстанцировать нельзя Паттерн «Фабричный метод» предлагает решение данной проблемы

Слайд 36





Иерархия классов
Описание слайда:
Иерархия классов

Слайд 37





Абстрактные реализации сущностей «Product» и «Creator»
Описание слайда:
Абстрактные реализации сущностей «Product» и «Creator»

Слайд 38





Конкретные реализации сущностей «Product» и «Creator»
Описание слайда:
Конкретные реализации сущностей «Product» и «Creator»

Слайд 39





Достоинства и недостатки паттерна «Фабричный метод»
Достоинства
Фабричные методы избавляют проектировщика от необходимости встраивать в код зависящие от приложения классы
Код имеет дело только с интерфейсом класса Product, поэтому он может работать с любыми определенными пользователем классами конкретных продуктов
Недостатки
Клиентам, возможно, придется создавать подкласс класса Creator для создания лишь одного объекта ConcreteProduct
Описание слайда:
Достоинства и недостатки паттерна «Фабричный метод» Достоинства Фабричные методы избавляют проектировщика от необходимости встраивать в код зависящие от приложения классы Код имеет дело только с интерфейсом класса Product, поэтому он может работать с любыми определенными пользователем классами конкретных продуктов Недостатки Клиентам, возможно, придется создавать подкласс класса Creator для создания лишь одного объекта ConcreteProduct



Похожие презентации
Mypresentation.ru
Загрузить презентацию