former for design: strategien mønster

, design mønstre: strategien mønster,,,,, 42,,,,,,,,, 6,,,,,,, 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: en indretningsarkitekt patterndesign mønstre: simpel fabrik mønster, så vidt vi har omfattet tre former for design i denne serie.vi har defineret fire kategorier af forskellige former for design.i denne artikel, vil jeg forklare   strategi design mønster, der henhører under, adfærds former for design,.,,, du har måske et spørgsmål: når vi skal bruge denne konstruktion mønster?jeg vil sige, når vi har flere metoder (algoritmer) til at udføre den samme operation, og vi ønsker anvendelsen at vælge den særlige måde, baseret på parametre, du har.dette mønster er også kendt som en politisk mønster. en meget enkel f.eks. denne artikel er sortering træk.vi har f.eks. flere algoritmer til sortering arrays, men baseret på antallet af elementer i det system, vi skal vælge, hvilken algoritme til anvendelse, der giver de bedste resultater. dette mønster er også kendt som en politisk mønster.,,,, jeg vil tage et eksempel på en ehandel websted under flere betaling gateways integreret.webstedet har flere betaling gateways, jf. de krav, de vil ikke vise sig i spidsen.i stedet, passende betaling gateway skal udvælges på flyve baseret på vognen beløb.,,, med et enkelt eksempel, hvis vognen værdi er mindre end 500 dollars, betaling, bør behandles ved hjælp af paypal - standard, men hvis det er $500 eller derover, skal det behandles med opbevares oplysninger om kreditkort (hvis de oplysninger allerede er oplagret).,,, uden at gennemføre en ordentlig strategi, vores kodeks ville ligne nedenfor:,,, vi vil have store klasser for både betaler via paypal og betaler med kreditkort, som tilsættes under. //klasse til at betale med kreditkort kort klasse paybycc (private $ccnum = "; private $cctype ="; private $cvvnum = "; private $ccexpmonth ="; private $ccexpyear = "; offentlige function betaler ($værdi = 0) (echo "betalt".$beløb. "ved brug af kreditkort "}} //klasse til at betale med paypal - klasse paybypaypal (private $paypalemail ="; offentligheden betale ($værdi = 0) (echo "betalt".$beløb. "ved hjælp af paypal "}} //denne kode skal gentages hvert sted har brug for.= 5000 $beløb; hvis ($beløb > = 500) ($betale = nye paybycc(). $betale - > løn ($beløb)} andre {$betale = nye paybypaypal(). $betale - > løn ($beløb)}, her kan man sige, at vi nødt til at gøre vores kode hypotetiske udsagn.forestil dig det antal ændringer, de skal gøre, når vi kræver nye ændringer i denne logik, eller man har opdaget en fejl i denne logik.vi bliver nødt til at tilføje et plaster til alle de steder, hvor vi har anvendt denne kodeks.,, løsning, vil vi gennemføre de samme krav, men med anvendelse af strategien mønster, som sætter os i stand til at gøre reglerne mere klar, forståelig og kan forlænges.  , grænsefladen,,, vi vil gennemføre den grænseflade, der vil blive anvendt ved alle de forskellige betalingssystemer gateway - klasser.det drejer sig i sidste ende vores strategier, grænseflade paystrategy {offentlige funktion ($beløb)} klasse paybycc gennemfører paystrategy (private $ccnum = "; private $cctype ="; private $cvvnum = "; private $ccexpmonth ="; private $ccexpyear = "; offentligheden betale ($værdi = 0) (echo" betalt ".$beløb. "ved brug af kreditkort "}} klasse paybypaypal gennemfører paystrategy (private $paypalemail ="; offentligheden betale ($værdi = 0) (echo "betalt".$beløb. "ved hjælp af paypal "}}, næste skaber vi vores vigtigste klasse, der kan anvende en anden strategi end den, vi har gennemført hidtil.,, klasse shoppingcart {offentlige $værdi = 0, offentlig funktion __construct ($værdi = 0) ($- > beløb = $beløb;} offentlige funktion getamount() {tilbage $- > beløb;} offentlig funktion setamount ($værdi = 0) ($- > beløb = $beløb;} offentlig funktion payamount() (hvis ($- > beløb > = 500) ($betalinger = nye paybycc();} andre {$betalinger = nye paybypaypal();} $betaling - > løn ($- > beløb)), og her kan vi se, at vores betingede lastning af betalingsmetoder er gjort i  , payamount metode.lad os pakke alt sammen og se på, hvordan vi kan bruge dette yderligere. paystrategy {offentlige funktion, grænseflade, betale ($beløb)} klasse paybycc gennemfører paystrategy (private $ccnum = "; private $cctype ="; private $cvvnum = "; private $ccexpmonth ="; private $ccexpyear = "; offentligheden betale ($værdi = 0) (echo" betalt ".$beløb. "ved brug af kreditkort "}} klasse paybypaypal gennemfører paystrategy (private $paypalemail ="; offentligheden betale ($værdi = 0) (echo "betalt".$beløb. "ved hjælp af paypal "}} klasse shoppingcart {offentlige $værdi = 0, offentlig funktion __construct ($værdi = 0) ($- > beløb = $beløb;} offentlig funktion getamount() {tilbage $- > beløb;} offentlig funktion setamount ($værdi = 0) ($- > beløb = $beløb;} offentlig funktion payamount() (hvis ($- > beløb > = 500) ($betalinger = nye paybycc();} andre {$betalinger = nye paybypaypal();} $betaling - > løn ($- > beløb)}} - vogn = nye shoppingcart (499); $vogn - > payamount(); //output betaler 499 ved hjælp af paypal $vogn = nye shoppingcart (501); $vogn - > payamount(); //output betaler 501 med kreditkort, kan vi se, at med betaling af gateway er ikke gennemsigtige for anvendelsen.baseret på parametre, der har en ordentlig betaling gateway til rådighed til at behandle transaktionen.,, at tilføje en ny strategi, hvis der på et senere tidspunkt en bruger, der er nødvendige for at tilføje en ny strategi (nye betaling port her) med en anden logik, ville det være meget enkelt i dette tilfælde.lad os sige, at vi ønsker at tilføje en ny udbetaling gateway, moneybooker, og ønsker, at processen penge, når vognen beløb er mere end 500 dollars, men mindre end 1000 $, er alt, hvad vi skal gøre, er at skabe en ny strategi, klasse, der gennemfører vores grænseflade, og vi er klar til at gå.,, klasse paybymb gennemfører paystrategy (private $mbemail = "; offentligheden betale ($værdi = 0) (echo" betalt ".$beløb. "vi bruger penge, booker "), har vi vores nye strategi klasse klar nu, og vi er nødt til at ændre vores vigtigste, payamount metode.det trænger til at blive ændret som følger:,, offentlig funktion payamount() (hvis ($- > beløb > 500 & & $- > beløb < 1 000) ($betalinger = nye paybymb();} andre, hvis ($- > beløb, og gt = 500) ($betalinger = nye paybycc();} andre {$betalinger = nye paybypaypal();} $betaling - > løn ($- > beløb)), og her kan man se, at vi har foretaget ændringer i vores payamount, metoder, i stedet for kunden kode, som denne metode indebærer.,, konklusion, således at indgå, når vi har flere muligheder for at udføre det samme arbejde (i software, sprog, når vi har flere algoritmer til at udføre den samme operation), bør vi overveje at gennemføre strategien mønster.  , ved hjælp af dette mønster, vi er frie til at tilføje /fjerneen algoritme for at skifte til disse algoritmer er ikke gennemsigtige for anvendelsen.  , jeg har gjort mit bedste for at give et elementært, og alligevel nyttigt eksempel viser strategien design mønster, men hvis du har yderligere bemærkninger eller spørgsmål, ikke tøve med at tilføje dem i foder, nedenfor.



Previous:
Next Page: