Образац за дизајн посматрача је некако попут подцаста

Ако слушате подцасте, већ сте упознати са обрасцем Обсервер. У ствари, ви сте „посматрач“.

Ево дефиниције обрасца за посматраче:

Узорак посматрача дефинише зависност између једног објекта према многима, тако да када се један објект промени стање, сви његови зависници се аутоматски обавештавају и ажурирају.

Погледајмо дефиницију повезану са подцастима.

Пронашао сам занимљив подцаст под називом чај за програмере.

Након клика на дугме СУБСЦРИБЕ, сада сам на њиховој листи претплатника.

Када програмер чај објави нову епизоду, апликација ће обавестити мене и остале претплатнике. Преузима нову епизоду за нас.

То је тачно дефиниција обрасца посматрача!

Узорак посматрача дефинише зависност између једног објекта према многима, тако да када се један објект промени стање, сви његови зависници се аутоматски обавештавају и ажурирају.

Постоји програ-чај подцаст и претплатници један према многима.

Када стање чаја за програмере промени стање, попут објављивања нове епизоде, сви претплатници чаја програмера се обавештавају и ажурирају.

Уведимо га у Руби.

Започните с једноставном верзијом.

Подцаст класа садржи списак епизода и има методу додавања_еписоде на листу.

Тада можемо да направимо подцаст девелопер_теа и додамо епизоду број 1 овако:

Желим да добијем обавештење сваки пут када се објави нова епизода.

Можемо да ме ажурирамо након што на листу додамо нову епизоду:

И кад год добијем ажурирање од девелопер_теа, могу да наставим и преузмем последњу епизоду.

Уживам толико да слушам девелопер_теа да га препоручујем својој пријатељици Амбер. Сада се Амбер жели претплатити и на то.

Морамо се побринути да Амбер такође добије обавештење о томе када се појави нова епизода:

Хммм, овај код ради оно што ми желимо.

Али постоји проблем.

Сваки пут када желимо додати претплатника, морамо редефинисати класу.

Постоји ли начин да се ажурира листа претплатника без поновног дефинисања класе?

Можемо задржати листу претплатника!

Нова класа Подцаст води листу претплатника уз помоћ два нова метода: један за додавање претплатника и један за уклањање претплатника. Када се појави епизода, ажурирамо сваког претплатника.

Нажалост, Амбер не ужива у подцасту колико и ја и одлучи да се одјави. Да бисмо је уклонили са листе претплатника, користимо методу ремове_субсцрибер.

Да! Управо сте научили Обсервер образац!

Принцип дизајна иза узорка Посматрача.

Узорак посматрача користи принцип дизајна лабаве спојнице:

Залажите се за слабо спојене дизајне између објеката који међусобно делују.

Подцаст класа не зна много о својим претплатницима. Зна се само да сваки претплатник има метод ажурирања.

Овај лабави спој минимизира зависност између Подцаст-а и његових претплатника. Такође повећава флексибилност. Све док има начин ажурирања, претплатник може бити било шта: човек, група људи, животиња или чак аутомобил.

Такеаваис:

  1. Узорак посматрача дефинише зависност између једног објекта према многима, тако да када се један објект промени стање, сви његови зависници се аутоматски обавештавају и ажурирају.
  2. Принцип дизајна лабавих спојница: тежите ка лагано спојеном дизајну између међусобно повезаних предмета.

Хвала за читање. Постоје ли још неки примери из стварног живота обрасца Посматрача?

Објављујем на сихуи.ио недељно.

Претплатите се да нећете пропустити следећи чланак из серијала.

Следећи пут ћемо разговарати о…