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

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

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

Шрифт:

-
+

Інтервал:

-
+

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

Добавити
1 ... 18 19 20 ... 58
Перейти на сторінку:
class="applicability-problem">

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

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

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

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

Ство­рі­ть інте­рфе­йс про­то­ти­пів з єди­ним мето­дом clone. Якщо у вас вже є ієра­рхія про­ду­ктів, метод кло­ну­ва­ння можна ого­ло­си­ти в кожно­му з її класів.

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

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

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

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

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

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

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

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

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

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

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

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

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

Абстра­ктна фабри­ка, Буді­ве­льник та Про­то­тип можу­ть реа­лі­зо­ву­ва­ти­ся за допо­мо­гою Оди­на­ка.

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

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

Про­бле­ма

Оди­нак вирі­шує від­ра­зу дві про­бле­ми (пору­шую­чи принцип єди­но­го обов’язку класу):

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

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

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

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

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

Проте, є ще одна осо­бли­ві­сть. Було б непо­га­но й збе­рі­га­ти в одно­му місці код, який вирі­шує про­бле­му №1, і мати до нього про­стий та досту­пний інтерфейс.

Ціка­во, що в наш час пате­рн став насті­льки відо­мим, що тепер люди нази­ваю­ть «оди­на­ка­ми» наві­ть ті класи, які вирі­шую­ть лише одну з про­блем, пере­ра­хо­ва­них вище.

Ріше­ння

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

Якщо у вас

1 ... 18 19 20 ... 58
Перейти на сторінку:

 Увага!

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

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


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