Professional Documents
Culture Documents
DP урок 02 ua
DP урок 02 ua
Структурні
патерни
Зміст
1. Поняття структурного патерну. . . . . . . . . . . . . . . . . . 5
2. Патерн Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Причина виникнення патерну. . . . . . . . . . . . . . . . 7
2.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Результати використання патерну . . . . . . . . . . . 11
2.5. Практичний приклад використання патерну. . 12
3. Патерн Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Причини виникнення патерну. . . . . . . . . . . . . . . 15
3.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4. Результати використання патерну . . . . . . . . . . . 17
3.5. Практичний приклад використання патерну. . . 18
2
Зміст
4. Патерн Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2. Причини виникнення патерну. . . . . . . . . . . . . . . 20
4.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4. Результати використання патерну . . . . . . . . . . . 22
4.5. Практичний приклад використання патерну . . . . 23
5. Патерн Decorator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2. Причини виникнення патерну. . . . . . . . . . . . . . . 26
5.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.4. Результати використання патерну . . . . . . . . . . . 29
5.5. Практичний приклад використання патерну. . 29
6. Патерн Facade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2. Причини виникнення патерну. . . . . . . . . . . . . . . 35
6.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.4. Результати використання патерну . . . . . . . . . . . 38
6.5. Практичний приклад. . . . . . . . . . . . . . . . . . . . . . . 38
7. Патерн Flyweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2. Причини виникнення патерну. . . . . . . . . . . . . . . 40
7.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.4. Результати використання патерну . . . . . . . . . . . 43
7.5. Практичний приклад. . . . . . . . . . . . . . . . . . . . . . . 44
3
Компьютерная Академия ШАГ
8. Патерн Proxy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.1. Мета патерну. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.2. Причини виникнення патерну. . . . . . . . . . . . . . . 47
8.3. Структура патерну . . . . . . . . . . . . . . . . . . . . . . . . . 48
8.4. Результати використання патерну . . . . . . . . . . . 49
8.5. Практичний приклад. . . . . . . . . . . . . . . . . . . . . . . 50
9. Аналіз і порівняння структурних патернів . . . . . . 52
10. Домашнє завдання . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4
1. Поняття структурного патерну
1. Поняття структурного
патерну
Основуючись на визначенні інформаційних систем,
очевидним є те, що будь-яке програмне рішення, так чи
інакше, оперує деякою сукупністю даних, при аналізі
яких ми отримуємо деяку інформацію, завдяки якій ми
здійснюємо бізнес рішення і штатні рішення з управлін-
ня інформаційною системою.
Аналіз даних передбачає, що вони мають бути струк-
турованими. Це дозволить, з одного боку, ідентифікува-
ти різні дані (логічно відрізняти їх між собою), а з іншо-
го — організовувати атомарні величини у структуровані
об'єкти і їх сукупності. Структурування даних необхідне
для відображення понять, якими ми оперуємо під час
аналізу, і навіть відображення зв'язків, які утворюються
між об'єктами у процесі їх появи.
Об'єктно-орієнтований підхід надає нам багатий ін-
струментарій у сенсі опису структурованих понять та
відображення відносин, у яких вони складаються. Про-
те організація структури, що пов'язує поняття у працю-
ючу систему, має вирішальне значення з погляду ефек-
тивного застосування інформаційної системи, також як
і з погляду супроводу отриманого в результаті процесу
розробки продукту.
Патерни проєктування, у загальному сенсі, відобра-
жають найкращі моделі вирішення прикладних проблем,
5
Урок №2
6
2. Патерн Adapter
2. Патерн Adapter
7
Урок №2
8
2. Патерн Adapter
Рисунок 1
9
Урок №2
Request()
SpecificRequest()
<<return>>
<<return>>
Рисунок 2
Рисунок 3
10
2. Патерн Adapter
Request()
adaptterSpecificRequest()
<<return>>
<<return>>
Рисунок 4
11
Урок №2
12
2. Патерн Adapter
Рисунок 5
Таким чином, ми реалізуємо функцію запису колекції
елементів у файл в xml-форматі, і водночас не змінюємо
13
Урок №2
14
3. Патерн Bridge
3. Патерн Bridge
3.1. Мета патерну
Мета патерну Bridge (з англ. «міст») полягає в тому,
щоб відокремити абстракцію від її реалізації, щоб вони
могли змінюватися незалежно один від одного.
3.2. Причини виникнення патерну
Зазвичай, у випадках, коли деяка абстракція (зазви-
чай абстрактний клас) може мати декілька певних реа-
лізацій, використовують наслідування визначення мно-
жини класів зі схожим (загалом, говорять однаковим або
сумісним) інтерфейсом. Абстрактний клас визначає ін-
терфейс для своїх нащадків, який вони реалізують «різ-
ними» засобами.
Однак, такий підхід не завжди є досить гнучким і має
деякі слабкі сторони, здатні призвести до надмірності коду,
а також створити додаткові складнощі підчас ведення про-
єкту, що значно збільшить його вартість. Пряме успадку-
вання інтерфейсу абстракції певним класом пов'язує реа-
лізацію з абстракцією безпосередньо, що створює складно-
щі при подальшій модифікації реалізації (її розширення),
а також не дозволяє повторно використовувати абстрак-
цію і її реалізацію окремо одна від одної. Реалізація, нена-
че стає «жорстко пов'язаною» з абстракцією.
Патерн проєктування «міст» передбачає розташу-
вання інтерфейсу та його реалізації в різних ієрархіях,
15
Урок №2
16
3. Патерн Bridge
Рисунок 6
17
Урок №2
Рисунок 7
18
3. Патерн Bridge
19
Урок №2
4. Патерн Composite
4.1. Мета патерну
Патерн Composite (компонувальник) призначений
для того, щоб уявити об'єкти у вигляді структури дерева
у ієрархічному зв'язку «частина-ціле».
20
4. Патерн Composite
21
Урок №2
Рисунок 8
22
4. Патерн Composite
23
Урок №2
Рисунок 9
24
4. Патерн Composite
25
Урок №2
5. Патерн Decorator
5.1. Мета патерну
Мета патерну Decorator (від англ. «декоратор») по-
лягає у тому, щоб реалізувати можливість динамічного
додавання функціоналу до об'єкта, а також розподілити
відповідальність за виконання окремих функцій між ок-
ремими класами.
Також декоратор є альтернативою наслідування у
сенсі розширення функціоналу об'єктів.
26
5. Патерн Decorator
Operation
Operation
<<return>>
AddedBehaviorB
<<return>>
AddedBehaviorA
Рисунок 10
27
Урок №2
Рисунок 11
28
5. Патерн Decorator
29
Урок №2
Рисунок 12
30
5. Патерн Decorator
OnPaint
Paint(DC)
Paint(e)
<<return>>
DrawColoredText(e)
AddedBehaviorA
<<return>>
Рисунок 13
31
Урок №2
Рисунок 14
32
5. Патерн Decorator
Рисунок 15
33
Урок №2
6. Патерн Facade
Користувач
«subsystem» «subsystem»
Ресторан Офіс
Каса Приймальна
Бухгалтерія
Кухня Відділ кадрів
Склад Робота з
Прибирання клієнтами Маркетинг
приміщень
Рисунок 16
34
6. Патерн Facade
35
Урок №2
яти зі структурою.
StartWork2()
Operation1()
Operation1()
Operation2()
Operation1()
<<return>>
Рисунок 18
37
Урок №2
38
6. Патерн Facade
Рисунок 19
Пользователь будет управлять системой через класс фасад(FacadeFileBase)
Користувач керуватиме системою через клас «фасад»
который в свою очередь вызывает объекты подсистемы.
В(FacadeFileBase), який Samples.
папке урока есть папка у свою чергу
В ней викликає
вы можете об’єкти під-
найти реализацию
системи.
паттерна Facade.
39
Паттерны проектирования - Урок №2
Урок №2
7. Патерн Flyweight
7.1. Мета патерну
Метою патерну є більш економне використання пам'яті
комп'ютера. Досягається це більш правильним способом
роботи з великою кількістю дрібних об'єктів.
Для розуміння роботи патерна необхідно навчити-
ся розділяти внутрішні та зовнішні властивості об'єкта.
Внутрішня властивість об'єкта — це властивість, яка збе-
рігає об'єкт у собі. Тобто це екземпляр класу, всередині
якого створено властивість (змінна), і зберігається, доки
«живе» об'єкт. Зовнішня властивість — це властивість,
яка передається об'єкту як аргумент одного (або кількох)
методу, і існує, доки виконується метод.
Суть патерна полягає в тому, щоб «переписати» вну-
трішні властивості у зовнішні і потім не створювати бага-
то об'єктів, а створити один, який «відображатиметься»
по-різному, залежно від того, які зовнішні властивості
до нього будуть застосовані.
40
7. Патерн Flyweight
41
Урок №2 КОМПЬЮТЕРНАЯ АКАДЕМИЯ «ШАГ»
Рисунок 20
42
Классы A,B,C наследуются от базового класса, который описы
интерфейс взаимодействия со всеми типами приспособленцев.
7. Патерн Flyweight
43
Урок №2
Рисунок 21
44
7. Патерн Flyweight
45
Урок №2
8. Патерн Proxy
Рисунок 22
46
8. Патерн Proxy
47
Урок №2
48
8. Патерн Proxy
Add(5,8)
Add(5,8)
13
13
Рисунок 23
49
Урок №2
Рисунок 24
50
8. Патерн Proxy
Рисунок 25
51
Урок №2
9. Аналіз і порівняння
структурних патернів
52
9. Аналіз і порівняння структурних патернів
53
Урок №2
54
10. Домашнє завдання
55
Урок №2
Структурні патерни