Similar presentations:
Основы разработки программных систем. Типовые решения стадии проектирования
1. ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНЫХ СИСТЕМ
РОССИЙСКИЙ УНИВЕРСИТЕТ ДРУЖБЫ НАРОДОВКАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ОСНОВЫ РАЗРАБОТКИ
ПРОГРАММНЫХ СИСТЕМ
Типовые решения
стадии проектирования
Смирнов Иван
Соченков Илья
2. Рисунки
3. Компоновщик (Composite)
• Рекурсивная композиция• Единый интерфейс для простых и
сложных компонентов
4. Компоновщик: Структура
5.
6.
7. Мост (bridge)
• Проблемы– Несколько реализаций порождает много
классов
– Привязка реализации к абстракции
– Трудно менять реализацию, не затронув
абстракцию
8. Мост: решение
• Отделяем абстракцию от реализаций9.
10.
Mainline : CLine
lineImpl :
CBorlandCanvasLine
1: new
2: Реализация
3: new
В конструктор
передаётся
реализация
Client
4: Draw( )
5: Draw( )
Прорисовка
происходит
здесь
11. Фабрика (Factory): проблема
• Существует несколько семействобъектов
• В одно время необходимо создавать
объекты только одного семейства, т.е.
система конфигурируется этим
семейством
• Система не должна зависеть от выбора
семейства
12. Фабрика: решение
• Для каждого семейства объектовсоздаём классы-фабрики, создающие
объекты
13. Фабрика: структура
14.
15.
Mainline :
CLine
lineImpl :
bcfactory :
CBorlandCanvasLine CBorlandCanvasShapeFactory
1: new
2: CreateLineImpl( )
3: new
4: Реализация
5: new
Client
6: Draw( )
В
конструктор
передаётся
реализация
7: Draw( )
Прорисовка
происходит
здесь
16. Декоратор (Decorator)
• Проблема– Необходимо добавить обязанности одному
объекту, но не классу
• Решение
– Создаём класс-декоратор, который
наследует интерфейсу декорируемого
объекта
17. Декоратор: структура
18.
19.
Clientshape :
CCompositeShape
1: new
borderedshape :
CBorderedShape
Передаём
рисунок в
конструкторе
2: new
3: Draw( )
4: Draw( )
Сначала рисуем
рисунок, потом
рамку
5: DrawBorder( )
20. Заключение
• Рассмотрели решения, позволяющиесоздавать масштабируемые программы
– Компоновщик – организует вложенные
классы в иерархию с единым
интерфейсом
– Мост – отделяет абстракцию от её
реализации, делает систему гибче
– Фабрика – создаёт объекты нужного
семейства
– Декоратор – легко расширяет поведение
объекта