Observer Pattern yra fundamentali dizaino šablonas programinės įrangos kūrime, kuris leidžia minimalizuoti objektų susiejimą. Naudodamasis praktiniu pavyzdžiu, pavyzdžiui, signalizacija, išmoksite, kaip efektyviai įgyvendinti Observer Pattern PHP. Centrinė signalizacijos sistema sukurta taip, kad įvairūs pranešimų tarnybos, tokios kaip el. paštas, SMS ar telefono skambutis, gali veikti kaip stebėtojai.

Pagrindinės išvados

  • Observer Pattern leidžia laisvą susiejimą tarp objektų.
  • Objektai gali registruotis centrinėje sistemoje, kad gautų pranešimus.
  • Modulinis kodas skatina jūsų taikomosios programos priežiūrą ir lankstumą.

Žingsnis po žingsnio instrukcija

Observer Pattern supratimas

Pirmiausia turėtumėte suprasti, ką Observer Pattern turėtų pasiekti. Mūsų pavyzdyje signalizacija yra aktyvuojama įvairių jutiklių, kurie tada siunčia pranešimus registruotiems stebėtojams – pvz., el. pašto ir SMS paslaugoms. Tikslas yra atlaisvinti ryšį tarp signalizacijos sistemos ir pranešimų tarnybų.

Objektinis programavimas su Observer modeliu PHP kalba

Signalizacijos klasės įgyvendinimas

Pradėkite kurti signalizaciją. Sukurkite centrinę klasę, kuri gali aktyvuoti signalą. Ši klasė bus papildyta dispečeriu, kuris perduoda pranešimą registruotiems stebėtojams.

Stebėtojų registracija

Norint įgyvendinti Observer Pattern, turėtumėte savo signalizacijoje apibrėžti sąsają, leidžiančią registruoti ir pranešti stebėtojams. Metodas attach() leidžia stebėtojui registruotis, o detach() leidžia atsisakyti registracijos.

Observer sąsaja

Dabar sukurkite stebėtojus. Apibrėžkite abstrakčią klasę, kuri įgyvendina sąsają. Ši klasė turės pagrindines funkcijas, kurių reikia kiekvienam konkrečiam stebėtojui, ypač update metodą, kuris bus iškviečiamas, kai signalas aktyvuojamas.

Signalizacijos dispečeris

Įgyvendinkite savo signalizacijos klasėje dispečeri. Šioje klasėje naudokite masyvą registruotų stebėtojų saugojimui. Dispečeryje yra įgyvendinti metodai attach() ir detach(), skirti stebėtojams pridėti arba pašalinti.

Notify metodas

Dispečeris turi turėti notify() metodą, kuris praneša visiems registruotiems stebėtojams, kai signalas aktyvuojamas. Čia bus iškviečiama stebėtojų update() metodas, leidžiantis jiems vykdyti savo konkrečią logiką pranešimui.

Konkrečių stebėtojų kūrimas

Dabar apibrėžkite konkrečius stebėtojus. Sukurkite el. pašto, SMS ir telefono klases, kurios visos paveldi iš abstrakčios stebėtojo klasės. Kiekviena iš šių klasių įgyvendina update() metodą ir vykdo konkrečią logiką signalizacijos pranešimui.

Stebėtojų integracija

Pagrindiniame jūsų taikomosios programos faile dabar parodykite, kaip signalizacija ir stebėtojai integruojami. Registruokite įvairius stebėtojus signalizacijoje, iškviesdami attach() metodą ir perduodami atitinkamas instancijas.

Signalizacijos testavimas

Dabar galite išbandyti signalizaciją naršyklėje. Kai signalizacija aktyvuojama, kiekvienas registruotas stebėtojas turėtų gauti atitinkamą pranešimą. Tai galite patikrinti, aktyvuodami signalą savo kode.

Moduliarumas ir lankstumas

Observer Pattern taikymas gerina moduliarumą. Stebėtojai gali būti pridėti arba pašalinti, nekeitinant pačios signalizacijos. Tai suteikia didelį lankstumą, ypač kai taikomoji programa plečiasi arba kinta reikalavimai.

Santrauka – Observer Pattern objektinio programavimo žiniatinklyje su PHP

Observer Pattern yra efektyvus įrankis sumažinant objekto susiejimą programinės įrangos sistemoje. Per signalizacijos pavyzdį jūs galėjote ne tik sužinoti šio šablono struktūrą ir įgyvendinimą, bet ir suprasti modulių ir lankstumo privalumus. Eksperimentuokite patys su Observer Pattern, kad teoriją perkelti į praktiką.

Dažnai užduodami klausimai

Kaip registruoti stebėtoją?Stebėtoją registruojate, perduodami signalizacijos attach() metodui stebėtojo instanciją.

Kas nutinka, kai stebėtojas atsisakomas?Kai stebėtojas atsisakomas detach() metodu, jis nebegaus pranešimų, kai signalas bus aktyvuotas.

Ar galima registruoti kelis stebėtojus vienu metu?Taip, galite registruoti tiek stebėtojų, kiek norite, jei jie atitinka Observer sąsajos reikalavimus.

Kaip pranešimas stebėtojams yra vykdomas?Pranešimas vykdomas naudojant notify() metodą signalizacijoje, kuris iškviečia kiekvieno registruoto stebėtojo update() metodą.