Содержание
- 2. Что такое паттерны (шаблоны) проектирования? Эффективные способы решения характерных задач проектирования Обобщенное описание решения задачи, которое
- 3. Польза Каждый паттерн описывает решение целого класса проблем Каждый паттерн имеет известное имя облегчается взаимодействие между
- 4. Порождающие паттерны
- 5. Порождающие паттерны проектирования Абстрагируют процесс инстанцирования объектов Список паттернов Абстрактная фабрика (Abstract Factory) Строитель (Builder) Фабричный
- 6. Abstract Factory (Абстрактная фабрика)
- 7. Назначение паттерна «Абстрактная фабрика» Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их
- 8. Паттерн «Абстрактная фабрика» Шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы
- 9. Реализация паттерна Паттерн «Абстрактная фабрика» реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания
- 10. Применение паттерна Используйте паттерн, когда Система не должна зависеть от того, как создаются, компонуются и представляются
- 11. Структура Объявляет интерфейс для операций, создающих абстрактные объекты-продукты Реализует операции, создающие конкретные объекты-продукты; Объявляет интерфейс для
- 12. Пример использования При разработке приложений с графическим интерфейсом пользователя необходимо создавать различные элементы управления Кнопки, текстовые
- 13. Иерархия классов CButton CWindowsButton CMacOSXButton CRadioButton CWindowsRadioButton CMacOSXRadioButton CCheckBox CWindowsCheckBox CMacOSXCheckBox
- 14. Абстрактные и конкретные элементы управления class CButton { public: virtual ~CButton(){} //... }; class CWindowsButton :
- 15. Абстрактная и конкретные фабрики class CUIFactory { public: virtual CButton* CreateButton()const=0; virtual CCheckBox* CreateCheckBox()const=0; }; class
- 16. Преимущества использования паттерна «Абстрактная фабрика» Изоляция конкретных классов продуктов Фабрика изолирует клиента от деталей реализации классов
- 17. Недостатки паттерна «Абстрактная фабрика» Трудность поддержания новых типов продуктов Интерфейс абстрактной фабрики фиксирует набор продуктов, которые
- 18. Пример – фабрика, создающая элементы игрового поля enum ItemType { WALL, WATER, FOREST, SAND, }; class
- 19. Builder (Строитель)
- 20. Назначение паттерна «Строитель» Отделяет конструирование сложного объекта от его представления, так что в результате одного и
- 21. Область применения паттерна «Строитель» Алгоритм создания сложного объекта не должен зависеть от того, из каких частей
- 22. Структура Задает абстрактный интерфейс для частей объекта Product Реализует интерфейс Builder, конструирует и собирает вместе части
- 23. Отношения между участниками паттерна Клиент создает новый объект «Распорядитель» (Director) и конфигурирует его новым объектом-строителем Builder
- 24. Достоинства паттерна «Строитель» Позволяет изменять внутреннее представление продукта Распорядителю предоставляется абстрактный интерфейс Строителя, скрывающего структуру продукта
- 25. Пример использования В редакторе форматированного текстового документа необходимо реализовать возможность преобразования его в различные форматы Plain
- 26. Иерархия классов Распорядитель Продукты Строитель
- 27. Реализация сущности «Строитель» class CTextConverter { public: virtual void ConvertText (std::string const& s){} virtual void ConvertFontChange
- 28. Реализация сущности «Распорядитель» class CFormattedTextReader { public: void Read(CFormattedText const& text, CTextConverter & converter) { for
- 29. Реализация клиента void ConvertToPDF(CFormattedText const& text, std::string const& outputFile) { // создаем строителя CPDFConverter converter; //
- 30. Factory Method (Фабричный метод)
- 31. Назначение паттерна «Фабричный метод» Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой
- 32. Структура Определяет интерфейс объектов, создаваемых фабричным методом Реализует интерфейс Product Объявляет фабричный метод, возвращающий объект типа
- 33. Отношения между участниками паттерна Создатель «полагается» на свои подклассы в определении фабричного метода, который будет возвращать
- 34. Применимость Классу заранее неизвестно, объекты каких классов ему нужно создавать Класс спроектирован так, чтобы объекты, которые
- 35. Пример использования Каркас приложения, позволяющего пользователю работать с различными типами документов Основные абстракции в таком каркасе
- 36. Иерархия классов
- 37. Абстрактные реализации сущностей «Product» и «Creator» // Абстрактный Продукт class CDocument { public: virtual ~CDocument(){} virtual
- 38. Конкретные реализации сущностей «Product» и «Creator» // конкретный продукт class CMyDocument : public CDocument { public:
- 40. Скачать презентацию