former for design: adapteren mønster

, design mønstre: adapteren mønster,,,,, 283,,,,,,,,, 31,,,,,,,,,, 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: facaden patterndesign mønstre: indretningsarkitekt mønster i den sidste artikel, vi ser på, hvordan den facade design mønster kan anvendes til at lette beskæftigelsen af et stort og komplekst system med kun et simpel facade klasse.  , i denne artikel, vil vi fortsætte vores diskussion om former for design af at se på det, adapteren bestemt mønster.dette mønster kan anvendes, når din kode er afhængige af en ekstern api eller enhver anden klasse, der er tilbøjelige til at ændre ofte.dette mønster, falder ind under kategorien "strukturelle mønstre", fordi den lærer os, hvordan vores kode og vores klasser bør udformes med henblik på at forvalte og /eller udvide dem nemt.,,, igen, vil jeg gerne gentage, at design mønstre har intet nyt i forhold til de traditionelle kurser.i stedet, de viser os en bedre måde at strukturere vores klasser, klare deres opførsel, og forvalte deres oprettelse.,,,, <?php klasse paypal {offentlige funktion __construct() (//din kode, her //} offentlig funktion sendpayment ($beløb) (//betaler via paypal //echo "betaler via paypal:".$beløb;}} $paypal = nye paypal(). $paypal - > sendpayment ('2629 "), i ovennævnte regler, kan de se, at vi udnytter en paypal - klasse til blot at betale beløbet.her er vi direkte, at formålet med paypal - klasse og betaler via paypal.du har denne kodeks er spredt på flere steder.så kan vi se, at kodeksen er ved hjælp af   $paypal - > sendpayment ('amount her),   metode til at betale.  , for nogen tid siden, paypal ændrede api - metode navn fra  , sendpayment, til payamount,.det bør klart angive et problem for dem af os, der har været med, sendpayment metode.konkret har vi behov for at ændre  , sendpayment,   metode kræver, at  , payamount,.forestil dig, størrelsen af den kode, vi er nødt til at ændre, og den tid, vi skal bruge til prøvning af hvert af de elementer igen.,, løsning, en løsning på dette problem er at anvende adapteren design mønster.  , ifølge wikipedia:,, softwareudvikling, adapteren mønster er et programmel - det giver grænseflade for en eksisterende klasse anvendes fra en anden grænseflade.det er ofte bruges til at gøre de eksisterende klasser arbejde med andre, uden at ændre deres kildekode. i dette tilfælde kan man skabe et dæksblad grænseflade, der gør dette muligt.vi vil ikke foretage nogen ændringer i de ydre klasse bibliotek, fordi vi ikke har kontrol over det, og det kan ændre sig når som helst.  , lad os grave i den kode, som viser adapteren mønster i aktion: //konkrete gennemførelse af paypal, klasse paypal {offentlige funktion __construct() (//din kode her //} offentlig funktion sendpayment ($beløb) (//betaler via paypal //echo "betaler via paypal:".$beløb) //enkelt grænseflade for hver adapter, skaber vi grænseflade paymentadapter {offentlige funktion ($beløb)} klasse paypaladapter gennemfører paymentadapter (private $paypal; offentlig funktion __construct (paypal $paypal) ($- > paypal = $paypal;} offentligheden betale ($beløb) ($- > paypal - > sendpayment ($beløb)), omfattede en undersøgelse af kode ovenfor, og de bør være i stand til at sige, at vi ikke har indført nogen ændringer i de vigtigste, brug, klasse.i stedet har vi skabt en grænseflade til vores betaling adapter og en adapter klasse til paypal.,, og så bagefter har vi gjort til genstand for adapteren klasse i stedet for de vigtigste, brug, klasse.   og samtidig skabe et objekt af adapteren klasse vi vil videregive til genstand for de vigtigste, brug, klasse som argument. så den adapter klasse kan have en henvisning til de vigtigste klasse, og det kan kalde de påkrævede metoder i de vigtigste, brug, klasse.,,, lad os finde ud af, hvordan vi kan bruge denne metode direkte: //kundekode $paypal = nye paypaladapter (nye paypal()); $paypal - > løn ('2629), forestil dig at paypal ændrer sin metode navn fra sendpayment, payamount.så mangler vi kun at foretage ændringer i paypaladapter,.se på den reviderede adapter kode, som kun har én ændring.,, klasse paypaladapter gennemfører paymentadapter (private $paypal; offentlig funktion __construct (paypal $paypal) ($- > paypal = $paypal;} offentligheden betale ($beløb) {$- > paypal - > payamount ($beløb)}},, så bare en ændring, og vi er der, ved at tilføje en ny adapter, på dette punkt, vi har set, hvordan vi kan bruge adapteren design patten for at overvinde disse scenarier.nu er det meget let at tilføje en ny klasse afhængig af de eksisterende adapter.lad os sige det moneybooker api - er der til betaling.,,, så i stedet for at bruge den moneybooker klasse direkte, bør vi anvende samme adapter mønster, vi brugte til paypal. //konkrete gennemførelse af moneybooker klasse moneybooker {offentlige funktion __construct() (//din kode, her //} offentlig funktion dopayment ($beløb) (//betaler via moneybooker //echo "betale gennem moneybooker:".$beløb) //moneybooker adapter klasse moneybookeradapter gennemfører paymentadapter (private $moneybooker; offentlig funktion __construct (moneybooker $moneybooker) ($- > moneybooker = $moneybooker;} offentligheden betale ($beløb) {$- > moneybooker - > dopayment ($beløb).}} //kundekode $moneybooker = nye moneybookeradapter (nye moneybooker()); $moneybooker - > løn ('2629 "), som de kan se, er de samme principper finder anvendelse.du definere en metode, der er til rådighed for tredjemands klasser, og så, hvis en afhængighed, ændrer sin api, du blot ændre afhængige klasse uden at udsætte sine eksterne grænseflade.,, konklusion, en stor anvendelse til stadighed er koblet til andre biblioteker og apis, så jeg vil foreslå, at vi gennemfører adapteren metode, således at vi kan ingen problemer, når en tredjeparts api eller bibliotek skifter kode base.,,, jeg har gjort mit bedste for at give et elementært og alligevel nyttigt eksempel på adapteren bestemt mønster, men hvis du har yderligere bemærkninger eller spørgsmål, så tøv ikke med at tilføje dem i foder, nedenfor.



Previous:
Next Page: