Vzorec Observer Design je nekako podoben podcastu

Če poslušate podcaste, že poznate vzorec Observer. Pravzaprav ste "opazovalec".

Tu je opredelitev vzorca opazovalca:

Vzorec opazovalca definira odvisnost med mnogimi objekti, tako da ko se en predmet spremeni stanje, so vsi njegovi vzdrževani člani samodejno obveščeni in posodobljeni.

Poglejmo si definicijo, povezano s podcasti.

Našel sem zanimiv podcast z imenom čaj za razvijalce.

Po kliku gumba SUBSCRIBE sem zdaj na seznamu naročnikov.

Ko razvijalski čaj objavi novo epizodo, bo aplikacija obvestila mene in druge naročnike. Naloži novo epizodo za nas.

Točna je definicija vzorca Opazovalca!

Vzorec opazovalca definira odvisnost med mnogimi objekti, tako da ko se en predmet spremeni stanje, so vsi njegovi vzdrževani člani samodejno obveščeni in posodobljeni.

Med čarovniškim podcastom razvijalcev in naročniki obstaja odnos med številnimi.

Ko stanje čaja za razvijalce spremeni stanje, na primer izdajo nove epizode, so vsi naročniki čajev razvijalca obveščeni in posodobljeni.

Uvedimo ga v Rubyju.

Začnite s preprosto različico.

Razred Podcast vsebuje seznam epizod in ima način za dodajanje_izvoda na seznam.

Potem lahko ustvarimo podcast developer_tea in vanj dodamo epizodo # 1 takole:

Ob vsaki izdaji nove epizode želim dobiti obvestilo.

Lahko me posodobimo, ko na seznam dodamo novo epizodo:

In kadarkoli dobim posodobitev od developer_tea, lahko nadaljujem in prenesem zadnjo epizodo.

Uživam v poslušanju developer_tea toliko, da ga priporočam svoji prijateljici Amber. Zdaj se želi Amber tudi nanjo naročiti.

Poskrbeti moramo, da bo Amber prejel tudi obvestilo, ko bo izšla nova epizoda:

Hmmm, ta koda dela kar hočemo.

Toda obstaja težava.

Vsakič, ko želimo dodati naročnika, moramo razred na novo definirati.

Ali obstaja način za posodobitev seznama naročnikov, ne da bi morali na novo določiti razred?

ListPrehranimo lahko seznam naročnikov!

Novi razred Podcast vodi seznam naročnikov s pomočjo dveh novih metod: enega za dodajanje naročnikov in enega za odstranjevanje naročnikov. Ko izide epizoda, posodobimo vsakega naročnika.

Žal Amber ne uživa podcast toliko kot jaz in se odloči, da se odjavi. Za odstranitev s seznama naročnikov uporabljamo metodo remove_subscriber.

Da! Pravkar ste se naučili vzorec opazovalca!

Načelo oblikovanja za vzorcem opazovalca.

Vzorec opazovalca uporablja načelo oblikovanja ohlapne spojke:

Prizadevajte si za ohlapno povezane modele med predmeti, ki medsebojno delujejo.

Razred Podcast ne ve veliko o svojih naročnikih. Zaveda se, da ima vsak naročnik način posodobitve.

Ta ohlapna sklopka zmanjšuje odvisnost med Podcastom in njegovimi naročniki. Poveča tudi prožnost. Dokler ima način posodabljanja, je lahko naročnik karkoli: človek, skupina ljudi, žival ali celo avto.

Vzemi:

  1. Vzorec opazovalca definira odvisnost med mnogimi objekti, tako da ko se en predmet spremeni stanje, so vsi njegovi vzdrževani člani samodejno obveščeni in posodobljeni.
  2. Načelo oblikovanja ohlapne sklopke: prizadevajte si za ohlapno zasnovo med predmeti, ki medsebojno delujejo.

Hvala za branje. Ali obstajajo še kakšni primeri resničnega življenja vzorca Observer?

Objavljam v tednu sihui.io.

Naročite se, da ne boste zamudili naslednjega članka iz serije.

Naslednjič bomo govorili o ...