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

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

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

Шрифт:

-
+

Інтервал:

-
+

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

Добавити
1 ... 53 54 55 ... 58
Перейти на сторінку:
fa-check" aria-hidden="true"> Гаря­ча замі­на алго­ри­тмів на льоту. Ізо­лює код і дані алго­ри­тмів від інших класів. Замі­на спа­дку­ва­ння делегуванням. Реа­лі­зує принцип від­кри­то­сті/закри­то­сті. Ускла­днює про­гра­му вна­слі­док дода­тко­вих класів. Кліє­нт пови­нен знати, в чому поля­гає різни­ця між стра­те­гія­ми, щоб вибра­ти потрібну. Від­но­си­ни з інши­ми пате­рна­ми

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

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

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

Стра­те­гія змі­нює пове­ді­нку об’єкта «зсе­ре­ди­ни», а Деко­ра­тор змі­нює його «ззо­вні».

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

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

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

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

Про­бле­ма

Ви пише­те про­гра­му для дата-майнін­гу в офі­сних доку­ме­нтах. Кори­сту­ва­чі зава­нта­жу­ва­ти­му­ть до неї доку­ме­нти різних форма­тів (PDF, DOC, CSV), а про­гра­ма пови­нна видо­бу­ти з них кори­сну інформацію.

У першій версії ви обме­жи­ли­ся оброб­кою тільки DOC фай­лів. У насту­пній версії дода­ли під­трим­ку CSV. А через міся­ць «при­кру­ти­ли» робо­ту з PDF документами.

Класи дата-майнін­гу містя­ть бага­то дублювань.

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

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

Ріше­ння

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

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

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

Шабло­нний метод роз­би­ває алго­ри­тм на кроки, дозво­ляю­чи під­кла­са­ми пере­ви­зна­чи­ти деякі з них.

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

Спра­вді важли­вим є насту­пний етап. Тепер ми може­мо визна­чи­ти спі­льну пове­ді­нку для всіх трьох кла­сів і вине­сти її до супе­ркла­су. У нашо­му при­кла­ді кроки від­кри­ва­ння та закри­ва­ння доку­ме­нтів від­рі­зня­ти­му­ться для всіх під­кла­сів, тому зали­ша­ться абстра­ктни­ми. З іншо­го боку, код оброб­ки даних, одна­ко­вий для всіх типів доку­ме­нтів, пере­їде до базо­во­го класу.

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

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

Ана­ло­гія з життя

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

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

Але, незва­жаю­чи на ста­нда­рти­за­цію

1 ... 53 54 55 ... 58
Перейти на сторінку:

 Увага!

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

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