ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНЫХ СИСТЕМ
Рисунки
Компоновщик (Composite)
Компоновщик: Структура
Мост (bridge)
Мост: решение
Фабрика (Factory): проблема
Фабрика: решение
Фабрика: структура
Декоратор (Decorator)
Декоратор: структура
Заключение
331.50K
Category: programmingprogramming

Основы разработки программных систем. Типовые решения стадии проектирования

1. ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНЫХ СИСТЕМ

РОССИЙСКИЙ УНИВЕРСИТЕТ ДРУЖБЫ НАРОДОВ
КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ОСНОВЫ РАЗРАБОТКИ
ПРОГРАММНЫХ СИСТЕМ
Типовые решения
стадии проектирования
Смирнов Иван
Соченков Илья

2. Рисунки

3. Компоновщик (Composite)

• Рекурсивная композиция
• Единый интерфейс для простых и
сложных компонентов

4. Компоновщик: Структура

5.

6.

7. Мост (bridge)

• Проблемы
– Несколько реализаций порождает много
классов
– Привязка реализации к абстракции
– Трудно менять реализацию, не затронув
абстракцию

8. Мост: решение

• Отделяем абстракцию от реализаций

9.

10.

Main
line : CLine
lineImpl :
CBorlandCanvasLine
1: new
2: Реализация
3: new
В конструктор
передаётся
реализация
Client
4: Draw( )
5: Draw( )
Прорисовка
происходит
здесь

11. Фабрика (Factory): проблема

• Существует несколько семейств
объектов
• В одно время необходимо создавать
объекты только одного семейства, т.е.
система конфигурируется этим
семейством
• Система не должна зависеть от выбора
семейства

12. Фабрика: решение

• Для каждого семейства объектов
создаём классы-фабрики, создающие
объекты

13. Фабрика: структура

14.

15.

Main
line :
CLine
lineImpl :
bcfactory :
CBorlandCanvasLine CBorlandCanvasShapeFactory
1: new
2: CreateLineImpl( )
3: new
4: Реализация
5: new
Client
6: Draw( )
В
конструктор
передаётся
реализация
7: Draw( )
Прорисовка
происходит
здесь

16. Декоратор (Decorator)

• Проблема
– Необходимо добавить обязанности одному
объекту, но не классу
• Решение
– Создаём класс-декоратор, который
наследует интерфейсу декорируемого
объекта

17. Декоратор: структура

18.

19.

Client
shape :
CCompositeShape
1: new
borderedshape :
CBorderedShape
Передаём
рисунок в
конструкторе
2: new
3: Draw( )
4: Draw( )
Сначала рисуем
рисунок, потом
рамку
5: DrawBorder( )

20. Заключение

• Рассмотрели решения, позволяющие
создавать масштабируемые программы
– Компоновщик – организует вложенные
классы в иерархию с единым
интерфейсом
– Мост – отделяет абстракцию от её
реализации, делает систему гибче
– Фабрика – создаёт объекты нужного
семейства
– Декоратор – легко расширяет поведение
объекта
English     Русский Rules