Книги Українською Мовою » 💛 Інше » Занурення в патерни проектування, Олександр Швець 📚 - Українською

Читати книгу - "Занурення в патерни проектування, Олександр Швець"

В нашій бібліотеці можна безкоштовно в повній версії читати книгу онлайн українською мовою "Занурення в патерни проектування" автора Олександр Швець. Жанр книги: 💛 Інше. Наш веб сайт ReadUkrainianBooks.com дає можливість читати повні версії улюблених книг на Вашому гаджеті (IPhone, Android) або комп’ютері абсолютно безкоштовно, без реєстрації та СМС. Також маєте можливість завантажити книги на свій гаджет у форматі PDF, EPUB, FB2. Файли електронних книг - це цифрові файли, які призначені для перегляду на спеціальних пристроях, що відомі як читальні пристрої для електронних книг.

Шрифт:

-
+

Інтервал:

-
+

Добавити в закладку:

Добавити
1 ... 24 25 26 ... 58
Перейти на сторінку:
вно­ся­ться в одну з реа­лі­за­цій, при­зво­дя­ть до реда­гу­ва­ння всьо­го класу, що може викли­ка­ти появу неспо­ді­ва­них поми­лок у коді.

Міст дозво­ляє роз­ді­ли­ти моно­лі­тний клас на кілька окре­мих ієра­рхій. Після цього ви може­те змі­ню­ва­ти код в одній гілці кла­сів неза­ле­жно від іншої. Це спро­щує робо­ту над кодом і зме­ншує ймо­ві­рні­сть вне­се­ння помилок.

Якщо клас потрі­бно роз­ши­рю­ва­ти в двох неза­ле­жних площинах.

Міст про­по­нує виді­ли­ти одну з таких пло­щин в окре­му ієра­рхію кла­сів, збе­рі­гаю­чи поси­ла­ння на один з її об’єктів у поча­тко­во­му класі.

Якщо ви хоче­те мати можли­ві­сть змі­ню­ва­ти реа­лі­за­цію під час вико­на­ння програми.

Міст дозво­ляє замі­ню­ва­ти реа­лі­за­цію наві­ть під час вико­на­ння про­гра­ми, оскі­льки конкре­тна реа­лі­за­ція не «заши­та» в клас абстракції.

До речі, через цей пункт Міст часто плу­таю­ть із Стра­те­гією. Зве­рні­ть увагу, що у Моста цей пункт займає оста­ннє місце за зна­чу­щі­стю, оскі­льки його голо­вна зада­ча — стру­кту­рна.

Кроки реа­лі­за­ції

Визна­чте, чи існую­ть у ваших кла­сах два непе­ре­сі­чних вимі­ри. Це може бути функціо­на­льні­сть/пла­тфо­рма, пре­дме­тна обла­сть/інфра­стру­кту­ра, фронт-енд/бек-енд або інте­рфе­йс/реа­лі­за­ція.

Про­ду­майте, які опе­ра­ції буду­ть потрі­бні кліє­нтам, і опи­ші­ть їх у базо­во­му класі абстра­кції.

Визна­чте пове­ді­нки, які досту­пні на всіх пла­тфо­рмах, та вибе­рі­ть з них ту части­ну, яка буде потрі­бна для абстра­кції. На під­ста­ві цього опи­ші­ть зага­льний інте­рфе­йс реа­лі­за­ції.

Для кожної пла­тфо­рми ство­рі­ть вла­сний клас конкре­тної реа­лі­за­ції. Всі вони пови­нні дотри­му­ва­ти­ся зага­льно­го інте­рфе­йсу, який ми виді­ли­ли перед цим.

Додайте до класу абстра­кції поси­ла­ння на об’єкт реа­лі­за­ції. Реа­лі­зу­йте мето­ди абстра­кції, деле­гую­чи осно­вну робо­ту пов’яза­но­му об’єкту реалізації.

Якщо у вас є кілька варіа­цій абстра­кції, ство­рі­ть для кожної з них вла­сний підклас.

Кліє­нт пови­нен пода­ти об’єкт реа­лі­за­ції до кон­стру­кто­ра абстра­кції, щоб зв’язати їх разом. Після цього він може вільно вико­ри­сто­ву­ва­ти об’єкт абстра­кції, забу­вши про реалізацію.

Пере­ва­ги та недо­лі­ки Дозво­ляє буду­ва­ти пла­тфо­рмо-неза­ле­жні програми. При­хо­вує зайві або небе­зпе­чні дета­лі реа­лі­за­ції від кліє­нтсько­го коду. Реа­лі­зує принцип від­кри­то­сті/закри­то­сті. Ускла­днює код про­гра­ми вна­слі­док вве­де­ння дода­тко­вих класів. Від­но­си­ни з інши­ми пате­рна­ми

Міст прое­ктую­ть зазда­ле­гі­дь, щоб роз­ви­ва­ти вели­кі части­ни про­гра­ми окре­мо одну від одної. Ада­птер засто­со­вує­ться постфа­ктум, щоб зму­си­ти несу­мі­сні класи пра­цю­ва­ти разом.

Міст, Стра­те­гія та Стан (а також трохи і Ада­птер) мають схожі стру­кту­ри кла­сів — усі вони побу­до­ва­ні за принци­пом «компо­зи­ції», тобто деле­гу­ва­ння робо­ти іншим об’єктам. Проте вони від­рі­зняю­ться тим, що вирі­шую­ть різні про­бле­ми. Пам’ятайте, що пате­рни — це не тільки реце­пт побу­до­ви коду певним чином, але й опи­су­ва­ння про­блем, які при­зве­ли до тако­го рішення.

Абстра­ктна фабри­ка може пра­цю­ва­ти спі­льно з Мостом. Це осо­бли­во кори­сно, якщо у вас є абстра­кції, які можу­ть пра­цю­ва­ти тільки з деяки­ми реа­лі­за­ція­ми. В цьому випа­дку фабри­ка визна­ча­ти­ме типи ство­рю­ва­них абстра­кцій та реалізацій.

Пате­рн Буді­ве­льник може бути побу­до­ва­ний у вигля­ді Мосту: дире­ктор гра­ти­ме роль абстра­кції, а буді­ве­льни­ки — реалізації.

Також відомий як: Дерево, Composite

Компо­ну­ва­льник — це стру­кту­рний пате­рн прое­кту­ва­ння, що дає змогу згру­пу­ва­ти декі­лька об’єктів у дере­во­по­ді­бну стру­кту­ру, а потім пра­цю­ва­ти з нею так, ніби це оди­ни­чний об’єкт.

Про­бле­ма

Пате­рн Компо­ну­ва­льник має сенс тільки в тих випа­дках, коли осно­вна моде­ль вашої про­гра­ми може бути стру­кту­ро­ва­на у вигля­ді дерева.

Напри­клад, є два об’єкти — Продукт і Коробка. Коробка може місти­ти кілька Продуктів та інших Коробок меншо­го роз­мі­ру. Оста­нні, в свою чергу, також містя­ть або Продукти, або Коробки і так далі.

Тепер, при­пу­сті­мо, що ваші Продукти й Коробки можу­ть бути части­ною замов­ле­нь. При цьому замов­ле­ння може місти­ти як зви­чайні Продукт без паку­ва­ння, так і напо­вне­ні змі­стом Коробки. Ваше зав­да­ння поля­гає в тому, щоб дізна­ти­ся варті­сть всьо­го замовлення.

Замов­ле­ння може скла­да­ти­ся з різних про­ду­ктів, запа­ко­ва­них у вла­сні коробки.

Якщо спро­бу­ва­ти вирі­ши­ти зав­да­ння напро­лом, тоді потрі­бно від­кри­ти усі короб­ки замов­ле­ння, пере­бра­ти про­ду­кти й пора­ху­ва­ти їхню зага­льну варті­сть. Але це зана­дто вели­ка моро­ка, оскі­льки типи коро­бок і їхній вміст можу­ть бути вам неві­до­мі зазда­ле­гі­дь. Крім того, напе­ред неві­до­мою є і кількі­сть рівнів вкла­де­но­сті коро­бок, тому пере­бра­ти короб­ки про­стим циклом не вийде.

Ріше­ння

Компо­ну­ва­льник про­по­нує роз­гля­да­ти Продукт і Коробку через єди­ний інте­рфе­йс зі спі­льним мето­дом отри­ма­ння ціни.

Продукт про­сто пове­рне свою варті­сть, а Коробка запи­тає про варті­сть кожно­го пре­дме­та все­ре­ди­ні себе і пове­рне суму резуль­та­тів. Якщо одним із вну­трі­шніх пре­дме­тів вияви­ться трохи менша короб­ка, вона теж буде пере­би­ра­ти вла­сний вміст, і так далі, допо­ки не пора­хує­ться вміст усіх скла­до­вих частин.

Компо­ну­ва­льник реку­рси­вно запу­скає дію по всіх компо­не­нтах дере­ва — від корі­ння до листя.

Для вас як кліє­нта важли­вим є те, що вже не потрі­бно нічо­го знати про стру­кту­ру замов­ле­нь. Ви викли­кає­те метод отри­ма­ння ціни, він пове­ртає цифру, і

1 ... 24 25 26 ... 58
Перейти на сторінку:

 Увага!

Сайт зберігає кукі вашого браузера. Ви зможете в будь-який момент зробити закладку та продовжити читання книги «Занурення в патерни проектування, Олександр Швець», після закриття браузера.

Подібні книжки до книжки «Занурення в патерни проектування, Олександр Швець» жанру - 💛 Інше:


Коментарі та відгуки (0) до книги "Занурення в патерни проектування, Олександр Швець"