Ang pattern ng Disenyo ng Tagamasid ay uri ng tulad ng isang podcast

Kung nakikinig ka sa mga podcast, pamilyar ka sa pattern ng Observer. Sa katunayan, ikaw ay isang "tagamasid".

Narito ang kahulugan para sa pattern ng Tagamasid:

Ang pattern ng Tagamasid ay tumutukoy sa isang-sa-maraming pag-asa sa pagitan ng mga bagay upang kapag ang isang bagay ay nagbabago ng estado, lahat ng mga dependents ay inaalam at awtomatikong na-update.

Tingnan ang kahulugan na nauugnay sa mga podcast.

Natagpuan ko ang isang kawili-wiling podcast na pinangalanan ng developer tea.

Matapos i-click ang pindutan ng SUBSCRIBE, nasa listahan na ako ng kanilang mga tagasuskribi.

Kapag naglabas ng tsaa ang developer ng isang bagong yugto, ipaalam sa akin ang app at iba pang mga tagasuskribi. Nagda-download ito ng bagong episode para sa amin.

Iyon mismo ang kahulugan ng pattern ng Tagamasid!

Ang pattern ng Tagamasid ay tumutukoy sa isang-sa-maraming pag-asa sa pagitan ng mga bagay upang kapag ang isang bagay ay nagbabago ng estado, lahat ng mga dependents ay inaalam at awtomatikong na-update.

Mayroong isang ugnayan sa pagitan ng developer ng podcast ng developer at mga tagasuskribi.

Kapag nagbabago ang estado ng developer ng tsaa, tulad ng paglabas ng isang bagong yugto, ang lahat ng mga tagasuskribi ng mga tagasuporta ng developer ay inaalam at na-update.

Ipatupad ito sa Ruby.

Magsimula sa isang simpleng bersyon.

Ang klase ng Podcast ay may hawak ng isang listahan ng mga episode at may isang paraan upang idagdag ang_episode sa listahan.

Pagkatapos ay maaari naming lumikha ng developer_tea podcast at magdagdag ng episode # 1 dito tulad nito:

Nais kong makakuha ng isang abiso tuwing inilabas ang isang bagong yugto.

Maaari naming i-update ako pagkatapos magdagdag ng isang bagong yugto sa listahan:

At sa tuwing nakakakuha ako ng pag-update mula sa developer_tea, maaari kong magpatuloy at i-download ang pinakabagong yugto.

Masaya akong nakikinig sa developer_tea kaya inirerekumenda ko ito sa aking kaibigan, si Amber. Ngayon, nais din ni Amber na mag-subscribe dito.

Kailangan nating tiyakin na nakakakuha rin ng abiso si Amber tuwing may bagong episode na pinakawalan:

Hmmm, ginagawa ng code na ito ang gusto natin.

Ngunit may problema.

Sa bawat oras na nais naming magdagdag ng isang tagasuskribi, kailangan naming muling tukuyin ang klase.

Mayroon bang paraan upang mai-update ang listahan ng tagasuskribi nang hindi na muling tukuyin ang klase?

Can Maaari kaming mapanatili ang isang listahan ng tagasuskribi!

Ang bagong klase ng Podcast ay nagpapanatili ng isang listahan ng tagasuskribi sa tulong ng dalawang bagong pamamaraan: ang isa para sa pagdaragdag ng mga tagasuskribi at isa para sa pag-alis ng mga tagasuskribi. Kapag pinalabas ang isang episode, ina-update namin ang bawat tagasuskribi.

Sa kasamaang palad, si Amber ay hindi nasiyahan sa podcast katulad ng ginagawa ko at nagpasya na mag-unsubscribe. Ginagamit namin ang paraan ng tinanggal_subscriber upang alisin siya sa listahan ng tagasuskribi.

Yay! Nalaman mo lang ang pattern ng Tagamasid!

Ang Prinsipyo ng Disenyo sa likod ng pattern ng Tagamasid.

Ginagamit ng pattern ng Tagamasid ang prinsipyo ng disenyo ng Loose Coupling:

Magsumikap para sa maluwag na magkasama na mga disenyo sa pagitan ng mga bagay na nakikipag-ugnay.

Hindi alam ng klase ng Podcast ang tungkol sa mga tagasuskribi nito. Alam lamang nito na ang bawat suskritor ay may paraan ng pag-update.

Ang maluwag na pagkabit na ito ay nagpapaliit sa pag-asa sa pagitan ng Podcast at ng mga tagasuskribi nito. Pinatutunayan din nito ang kakayahang umangkop. Hangga't mayroon itong isang paraan ng pag-update, ang isang tagasuskribi ay maaaring maging anumang: isang tao, isang pangkat ng mga tao, isang hayop, o kahit na isang kotse.

Mga Takeaway

  1. Ang pattern ng Tagamasid ay tumutukoy sa isang-sa-maraming pag-asa sa pagitan ng mga bagay upang kapag ang isang bagay ay nagbabago ng estado, lahat ng mga dependents ay inaalam at awtomatikong na-update.
  2. Ang prinsipyo ng Loose Coupling na disenyo: magsikap para sa maluwag na magkasama na mga disenyo sa pagitan ng mga bagay na nakikipag-ugnay.

Salamat sa pagbabasa. Mayroon bang iba pang mga tunay na buhay na halimbawa ng pattern ng Observer na maaari mong isipin?

Lathala ako sa sihui.io lingguhan.

Mag-subscribe upang hindi mo makaligtaan ang susunod na artikulo mula sa serye.

Sa susunod ay pag-uusapan natin ang tungkol sa…