BooksUkraine.com » 📖 Інше » Занурення в патерни проектування, Олександр Швець 📚 - Українською

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

16
0
На сайті BooksUkraine.com ви знайдете великий вибір книг українською мовою різних жанрів - від класичних творів до сучасної літератури. "Занурення в патерни проектування" автора Олександр Швець. Жанр книги: 📖 Інше. Зберігайте свої улюблені книги у власній бібліотеці, залишайте відгуки та знаходьте нових друзів-читачів. Реєструйтеся та насолоджуйтесь читанням на BooksUkraine.com!

Шрифт:

-
+

Інтервал:

-
+

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

Добавити
1 ... 33 34 35 ... 58
Перейти на сторінку:
class="br0">) is
    info = service.getVideoInfo(id)
    // Відобразити сторінку відеоролика.

  method renderListPanel() is
    list = service.listVideos()
    // Відобразити список превью відеороликів.

  method reactOnUserInput() is
    renderVideoPage()
    renderListPanel()

// Конфігураційна частина програми створює та передає клієнтам
// об'єкт замісника.
class Application is
  method init() is
    YouTubeService = new ThirdPartyYouTubeClass()     YouTubeProxy = new CachedYouTubeClass(YouTubeService)     manager = new YouTubeManager(YouTubeProxy)
    manager.reactOnUserInput() Засто­су­ва­ння

Ліни­ва іні­ціа­лі­за­ція (віртуа­льний про­ксі). Коли у вас є важкий об’єкт, який зава­нта­жує дані з фай­ло­вої систе­ми або бази даних.

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

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

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

Лока­льний запу­ск серві­су (від­да­ле­ний про­ксі). Коли спра­вжній серві­сний об’єкт зна­хо­ди­ться на від­да­ле­но­му сервері.

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

Логу­ва­ння запи­тів (логую­чий про­ксі). Коли потрі­бно збе­рі­га­ти істо­рію зве­рне­нь до серві­сно­го об’єкта.

Замі­сник може збе­рі­га­ти істо­рію зве­рне­ння кліє­нта до серві­сно­го об’єкта.

Кешу­ва­ння об’єктів («розу­мне» поси­ла­ння). Коли потрі­бно кешу­ва­ти резуль­та­ти запи­тів кліє­нтів і керу­ва­ти їхнім життє­вим циклом.

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

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

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

Визна­чте інте­рфе­йс, який би зро­бив замі­сни­ка та ори­гі­на­льний об’єкт взає­мо­за­мі­нни­ми.

Ство­рі­ть клас замі­сни­ка. Він пови­нен місти­ти поси­ла­ння на серві­сний об’єкт. Часті­ше за все серві­сний об’єкт ство­рює­ться самим замі­сни­ком. У рідкі­сних випа­дках замі­сник отри­мує гото­вий серві­сний об’єкт від кліє­нта через конструктор.

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

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

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

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

Ада­птер надає класу аль­те­рна­ти­вний інте­рфе­йс. Деко­ра­тор надає роз­ши­ре­ний інте­рфе­йс. Замі­сник надає той самий інтерфейс.

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

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

Спи­сок пове­ді­нко­вих пате­рнів прое­кту­ва­ння, які вирі­шую­ть зав­да­ння ефе­кти­вної та без­пе­чної взає­мо­дії між об'­є­кта­ми програми.

Ланцю­жок обо­в'я­зків Chain of Responsibility Дає змогу пере­да­ва­ти запи­ти послі­до­вно ланцю­жком обро­бни­ків. Кожен насту­пний обро­бник вирі­шує, чи може він обро­би­ти запит сам і чи варто пере­да­ва­ти запит далі ланцю­жком.
1 ... 33 34 35 ... 58
Перейти на сторінку:

!Увага!

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

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