Uzorak promatračkog dizajna nalik je podcastu

Ako slušate podcastove, već ste upoznati s uzorkom Promatrača. U stvari ste "promatrač".

Evo definicije za uzorak Promatrača:

Uzorak promatrača definira ovisnost između jednog objekta prema mnogima, tako da kada jedan objekt promijeni stanje, svi njegovi ovisnici automatski se obaviještavaju i ažuriraju.

Pogledajmo definiciju povezanu s podcastima.

Pronašao sam zanimljiv podcast nazvan programer čaj.

Nakon što kliknem gumb SUBSCRIBE, sada sam na njihovoj listi pretplatnika.

Kad čaj za razvojne programere objavi novu epizodu, aplikacija će obavijestiti mene i ostale pretplatnike. Preuzima novu epizodu za nas.

Točno je definicija uzorka Promatrača!

Uzorak promatrača definira ovisnost između jednog objekta prema mnogima, tako da kada jedan objekt promijeni stanje, svi njegovi ovisnici automatski se obaviještavaju i ažuriraju.

Postoji čarobni podcast programera i pretplatnika između jednog i mnogih.

Kada stanje čaja za razvojne programere promijeni stanje, poput objavljivanja nove epizode, svi pretplatnici čaja programera se obaveštavaju i ažuriraju.

Uvedimo ga u Ruby.

Započnite s jednostavnom verzijom.

Podcast klasa sadrži popis epizoda i ima metodu za dodavanje_ epizoda na popis.

Tada možemo stvoriti podcast developer_tea i tome dodati epizodu broj 1:

Želim dobiti obavijest kad god se objavi nova epizoda.

Možemo me ažurirati nakon dodavanja nove epizode na popis:

I kad god dobijem ažuriranje od developer_tea, mogu nastaviti s preuzimanjem najnovije epizode.

Uživam toliko slušati developer_tea da ga preporučujem svojoj prijateljici Amber. Sada se Amber želi pretplatiti i na njega.

Moramo se pobrinuti da Amber također dobije obavijest kad izađe nova epizoda:

Hmmm, ovaj kod radi što želimo.

Ali postoji problem.

Svaki put kada želimo dodati pretplatnika, moramo redefinirati klasu.

Postoji li način ažuriranja popisa pretplatnika bez ponovnog definiranja klase?

Možemo zadržati popis pretplatnika!

Nova klasa Podcast vodi popis pretplatnika uz pomoć dvije nove metode: jedna za dodavanje pretplatnika i jedna za uklanjanje pretplatnika. Kad se pojavi epizoda, ažuriramo svakog pretplatnika.

Nažalost, Amber ne uživa u podcastu kao i ja i odluči se odjaviti. Za uklanjanje s popisa pretplatnika koristimo metodu remove_subscriber.

Yay! Upravo ste naučili Uzorak promatrača!

Princip dizajna iza uzorka Promatrača.

Uzorak promatrača koristi princip dizajna labave spojke:

Zalažite se za slabo spojene dizajne između objekata koji međusobno djeluju.

Podcast klasa ne zna mnogo o svojim pretplatnicima. Zna samo da svaki pretplatnik ima metodu ažuriranja.

Ovaj labavi spoj minimizira ovisnost između Podcast-a i njegovih pretplatnika. Također povećava fleksibilnost. Ako ima način ažuriranja, pretplatnik može biti bilo šta: čovjek, grupa ljudi, životinja ili čak automobil.

takeaways:

  1. Uzorak promatrača definira ovisnost između jednog objekta prema mnogima, tako da kada jedan objekt promijeni stanje, svi njegovi ovisnici automatski se obaviještavaju i ažuriraju.
  2. Načelo labave spojke: težite lagano povezanim izvedbama između međusobno povezanih predmeta.

Hvala na čitanju. Postoje li neki drugi primjeri iz stvarnog života uzorka Promatrača koji se možete sjetiti?

Objavljujem na sihui.io tjedno.

Pretplatite se tako da nećete propustiti sljedeći članak iz serijala.

Sljedeći put ćemo razgovarati o…