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

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

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

Шрифт:

-
+

Інтервал:

-
+

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

Добавити
1 ... 40 41 42 ... 58
Перейти на сторінку:
до стеку істо­рії, про­до­вжую­чи нести у собі збе­ре­же­ний стан об’єкта. Якщо зна­до­би­ться ска­су­ва­ння, про­гра­ма візьме оста­нню кома­нду з істо­рії та від­но­ви­ть збе­ре­же­ний у ній стан.

Цей спо­сіб має дві осо­бли­во­сті. По-перше, точний стан об’єктів не дуже про­сто збе­ре­гти, адже його части­на може бути при­ва­тною. Вирі­ши­ти це можна за допо­мо­гою пате­рна Зні­мок.

По-друге, копії стану можу­ть займа­ти доси­ть бага­то опе­ра­ти­вної пам’яті. Тому іноді можна вда­ти­ся до аль­те­рна­ти­вної реа­лі­за­ції, тобто замі­сть від­нов­ле­ння ста­ро­го стану, кома­нда вико­нає зво­ро­тню дію. Недо­лік цього спосо­бу у скла­дно­сті (іноді немо­жли­во­сті) реа­лі­за­ції зво­ро­тньої дії.

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

Ство­рі­ть зага­льний інте­рфе­йс кома­нд і визна­чте в ньому метод запуску.

Один за одним ство­рі­ть класи конкре­тних кома­нд. У кожно­му класі має бути поле для збе­рі­га­ння поси­ла­ння на один або декі­лька об’єктів-оде­ржу­ва­чів, яким кома­нда пере­на­прав­ля­ти­ме осно­вну роботу.

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

І, наре­шті, реа­лі­зу­йте осно­вний метод кома­нди, викли­каю­чи в ньому ті чи інші мето­ди одержувача.

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

Змі­ні­ть осно­вний код від­пра­вни­ків так, щоб вони деле­гу­ва­ли вико­на­ння дії команді.

Поря­док іні­ціа­лі­за­ції об’єктів пови­нен вигля­да­ти так:

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

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

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

Обро­бни­ки в Ланцю­жко­ві обов’язків можу­ть бути вико­на­ні у вигля­ді Кома­нд. В цьому випа­дку роль запи­ту віді­грає конте­кст кома­нд, який послі­до­вно подає­ться до кожної кома­нди у ланцюгу.

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

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

Кома­нда та Стра­те­гія схожі за принци­пом, але від­рі­зняю­ться мас­шта­бом та засто­су­ва­нням:

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

Якщо Кома­нду потрі­бно копію­ва­ти перед вста­вкою в істо­рію вико­на­них кома­нд, вам може допо­мо­гти Про­то­тип.

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

Також відомий як: Iterator

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

Про­бле­ма

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

Різні типи колекцій.

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

Незва­жаю­чи на те, яким чином стру­кту­ро­ва­но коле­кцію, кори­сту­вач пови­нен мати можли­ві­сть послі­до­вно обхо­ди­ти її еле­ме­нти, щоб вико­ну­ва­ти з ними певні дії.

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

Одну і ту саму коле­кцію можна обхо­ди­ти різни­ми способами.

Додаю­чи все нові алго­ри­тми до коду коле­кції, ви потро­ху роз­ми­ває­те її осно­вну зада­чу,

1 ... 40 41 42 ... 58
Перейти на сторінку:

 Увага!

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

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