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

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

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

Шрифт:

-
+

Інтервал:

-
+

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

Добавити
1 ... 16 17 18 ... 58
Перейти на сторінку:
  // ...

Тако­го монстра можна ство­ри­ти тільки в мовах, що мають меха­ні­зм пере­ва­нта­же­ння мето­дів, напри­клад, C# або Java.

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

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

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

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

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

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

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

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

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

Опи­ші­ть ці кроки в зага­льно­му інте­рфе­йсі буді­ве­льни­ків.

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

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

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

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

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

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

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

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

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

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

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

Також відомий як: Клон, Prototype

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

Про­бле­ма

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

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

Копію­ва­ння «ззо­вні» не завжди можли­ве на практиці.

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

Ріше­ння

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

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

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

 Увага!

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

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


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