former for design: observatøren mønster

, design mønstre: observatøren mønster,,,,, 22,,,,,,,,, 4,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet design mønstre i folkesundhedsprogrammet. design mønstre: kommando patterndesign mønstre: fabrikken metode mønster, nu kommer jeg med en typisk udformning mønster i denne serie, som observatøren mønster.observatør, betyder, at der er nogen, der kigger på deres aktivitet, og det kan være muligt, at observatøren tager nogle aktioner afhængigt af deres aktiviteter.  ,, det samme koncept er gældende for design - så godt.vi bør gennemføre dette mønster, når vi har en mange afhængighed mellem vores mål og et objekt skal ændres /meddelt, når der sker ændringer i andre formål.,,, wikipedia siger det samme i ord nedenfor:,,, observatøren mønster er et programmel, mønster, som et objekt, - ringede til emnet, fører en liste over sine pårørende, observatører, og meddeler dem automatisk af enhver form for ændringer, normalt ved at kalde en af deres metoder.det er hovedsagelig anvendes til at gennemføre fordelt begivenhed systemer til håndtering.observatøren mønster er også et centralt element i den velkendte model – opfattelse – controller (mvc) arkitektoniske mønster.,, at udarbejde mere om dette design mønster, jeg tager eksemplet med en simulator, der viser værdien af de forskellige valutaer i forhold til den amerikanske dollar.vi går ud fra, at simulatoren viser prisen og ajourfører også prisen med regelmæssige mellemrum,.,,, før vi begynder, lad os definere ansvarsområderne for de vigtigste simulator klasse (der opfører sig som observatør i dette eksempel).  , denne observatør skal have mulighed for at tilføje en ny valuta, at kunden kan tilføje noget, som mange valutaer, som de vil have. denne observatør skal holde en henvisning til alle tilsatte valutaer. denne observatør skal vise status /værdi af hver registreret valuta.,,, i næste afsnit vil vi gennemføre vores observatør:,, grænseflade observatør (offentlig funktion addcurrency (valuta $valuta);} klasse pricesimulator gennemfører observatør (private $valutaer; offentlig funktion __construct() {$- > valutaer = array();} offentlig funktion addcurrency (valuta $valuta) (array_push ($- > valutaer, $valuta);} offentlig funktion updateprice() (for hvert ($- > valutaer som $valuta) {$valuta - > update();}}},, hvis du ser på ovennævnte kode, du kan se, at det er i stand til at udføre alle de opgaver, som vi har nævnt i det foregående afsnit, nu har vi vores observatør klar.det, vi nu har brug for, er nogle forskellige valutaer, som vi kan tilføje, at denne observatør, og så er vi klar til at gå.Let's implement our currency classes now.,,interface Currency { public function update(); \tpublic function getPrice(); } class Pound implements Currency { \tprivate $price; \t \tpublic function __construct($price) { \t\t$this->price = $price; \t\techo "<p>Pound Original Price: {$price}</p>"; \t} \t \tpublic function update() { \t\t$this->price = $this->getPrice(); \t\techo "<p>Pound Updated Price : {$this->price}</p>"; \t} \t \tpublic function getPrice() { \t\treturn f_rand(0.65, 0.71); \t} \t } class Yen implements Currency { \tprivate $price; \tpublic function __construct($price) { \t\t$this->price = $price; \t\techo "<p>Yen Original Price : {$price}</p>"; \t} \tpublic function update() {$- > pris = $- > getprice(), echo "< p > yen ajourførte pris: {$- > pris} < /p >"} offentlig funktion getprice() {tilbage f_rand (120.52, 22,50);}}, er, at vi alle er klar til at sætte det hele sammen og lede vores observatør.  , sætter det hele sammen, grænseflade observatør (offentlig funktion addcurrency (valuta $valuta);} klasse pricesimulator gennemfører observatør (private $valutaer; offentlig funktion __construct() {$- > valutaer = array();} offentlig funktion addcurrency (valuta $valuta) (array_push ($- > valutaer, $valuta);} offentlig funktion updateprice() (for hvert ($- > valutaer som $valuta) {$valuta - > update();\t} \t} } interface Currency { \tpublic function update(); \tpublic function getPrice(); } class Pound implements Currency { \tprivate $price; \t \tpublic function __construct($price) { \t\t$this->price = $price; \t\techo "<p>Pound Original Price: {$price}</p>"; \t} \t \tpublic function update() { \t\t$this->price = $this->getPrice(); \t\techo "<p>Pound Updated Price : {$this->price}</p>"; \t} \t \tpublic function getPrice() { \t\treturn f_rand(0.65, 0.71); \t} \t } class Yen implements Currency { \tprivate $price; \tpublic function __construct($price) { \t\t$this->price = $price; \t\techo "<p>Yen Original Price : {$price}</p>"; \t} \tpublic function update() { \t\t$this->price = $this->getPrice(); \t\techo "<p>Yen Updated Price : {$this->price}</p>"; \t} \t \tpublic function getPrice() { \t\treturn f_rand(120.52, 122.50); \t} \t } function f_rand($min=0,$max=1,$mul=1000000){ \tif ($min>$max) return false; \treturn mt_rand($min*$mul,$max*$mul)/$mul; } $priceSimulator = new priceSimulator(); $currency1 = new Pound(0.60); $currency2 = new Yen(122); $priceSimulator->addCurrency($currency1); $priceSimulator->addCurrency($currency2); echo "<hr />"; $priceSimulator->updatePrice(); echo "<hr />"; $priceSimulator->updatePrice();,,The above code will output:,,Pound Original Price: 0.6 Yen Original Price : 122 ------------- Pound Updated Price : 0.65346 yen ajourførte pris: 121.287809 ------------- pund ajourførte pris: 0.671269 yen ajourførte pris: 121.300605, her kan man se, at vi har ajourført de priser for alle registrerede valutaer, og de bliver udvist i vores simulator.nu vil vi overveje, hvordan vi kan tilføje nye valutaer til denne simulator med bare en lille ændring.  , er denne ændring omfatter registrering af valutaer til simulatoren.som sådan, vores klient kode forbliver uberørt, når de påberåber sig den pris, updater i vores simulator.,, at tilføje en ny valuta, valuta, klasse, klasse euro gennemfører valuta (private $pris; offentlig funktion __construct ($) pris) {$- > pris = $pris, echo "< p > euro oprindelige pris: {$pris} < /p >"} offentlig funktion update() {$- > pris = $- > getprice(), echo "< p > euro ajourførte pris: {$- > pris} < /p >"} offentlig funktion getprice() {tilbage f_rand (., 0)), var det let og ligetil at tilføje en ny valuta.nu skal vi bare registrere denne nye valuta i vores observatør, og vi er færdige., $pricesimulator = nye pricesimulator(). $currency1 = nye pund (0, 60); $currency2 = nye yen (122). $currency3 = nye euro (122). $pricesimulator - > addcurrency ($currency1); $pricesimulator - > addcurrency ($currency2); $pricesimulator - > addcurrency ($currency3), echo "< den højtstående repræsentant />" $pricesimulator - > updateprice(), echo "< den højtstående repræsentant />" $pricesimulator - > updateprice();,, konkluderes, at staten en genstand, er meget vigtige i objekt orienterede programmering fordi alt løber mellem ting og deres samspil med hinanden.det er ofte tilfældet, at et par genstande, skal anmeldes, når der sker ændringer i andre objekter.observatøren design mønster kan anvendes, når ændringer i et emne, skal overholdes af en eller flere observatører.,,, glem ikke at efterlade din feedback nedenfor.



Previous:
Next Page: