former for design: fabrikken metode mønster

, design mønstre: fabrikken metode mønster,,,,, 51,,,,,,,,, 11,,,,,,, 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: observatøren mønster i den foregående artikel, vi gik gennem enkle fabrik mønster.nu, i denne artikel, vil vi undersøge fabrikken metode bestemt mønster.i tilfælde af en simpel fabrik. det er en grænseflade til at skabe objekter, mens fabrikken metode gør det samme, men desuden kan anvendes til at træffe beslutning om, hvilken klasse til instantiate.,,, til at forklare den simple fabrik metode mønster, jeg brugte eksempel på skabelsen af et objekt i en bil med forskellige bil typer, der er sedan, suv, osv. jeg vil fortsætte den samme eksempel til at forklare den fabrik metode mønster, så vi kan få en bedre idé og kontinuitet.,,,,, i en enkelt fabrik, vi var at skabe et objekt af bilen, klasse, men det skaber et objekt i bilen - baseret på den bil, som vi har vedtaget.det var et godt skridt til at starte med at skabe objekter for en bil med forskellige typer,.,,, før vores firma var begrænset til at sælge en bil i usa, og det har en produktion center i usa.men som tiden går, virksomhedernes størrelse og den beslutter at sælge biler i det forenede kongerige og bygge en ny produktion center i det forenede kongerige.,,, i både produktion - - vores gamle kodeks til at bygge biler fungerer fint, men at forbedre kundetilfredshed, selskabet træffer beslutning om visse ændringer i den bil, men i det forenede kongerige biler.på dette stadium, vores kode til at bygge et objekt for en bil vil mislykkes, fordi vi har brug for en ekstra karakteristika (attributter) for en bestemt type biler.,,, vi har to muligheder, i dette tilfælde: enten at ændre den nuværende kodeks (flere, hvis andre betingelser) for at få den ønskede formål af bil eller omstrukturere vores klasser på en sådan måde, at den ikke kræver beskidt, hvis andre betingelser i din klasse, og i fremtiden, hvis du ønsker at tilføje et par elementer, men begrænsede typer klasse.,,, den første metode ikke vil gå med, fordi det er en slags kludetæppe, du gør i din kode, og ikke den rigtige gennemførelse.i det næste afsnit vil vi se på, hvordan vi kan gennemføre den anden metode ved hjælp af fabrikken metode bestemt mønster.,,, den løsning, det design - henhører under de strukturelle - kategori, så det er mere bekymret for, hvordan du struktur dine klasser.så lad os komme til løsning af problemet ved at strukturere vores klasser på den rigtige måde.,,, i en enkelt fabrik, har vi ikke brug for en struktur, fordi vi havde brug for en gruppe, der var ansvarlig for at skabe et objekt i den bil.baseret på de nuværende problemer, er vi nødt til at skabe en separat fabrik klasse, både for produktion - - så vil vi sikre, at alle vores fabrikker er efter samme procedure for at skabe et objekt i en klasse.derfor vil vi gøre en grænseflade, som både den amerikanske og britiske fabrik vil gennemføre.,,, grænseflade carfactory {offentlige funktion buildcar ($);}, nu vores grænseflade til fabrikker er klar, og det er på tide at oprette klasser af vores fabrikker, som usa og det forenede kongerige - fabrikkerne.,, /fabrik klasse til at bygge på center klasse uscarfactory gennemfører carfactory {offentlige funktion __construct() {} offentlig funktion buildcar ($) {$bil = ugyldig; skift ($) {"suv ': $bil = nye ussuvfactory(); bryde; sag" bil ": $bil = nye ussedanfactory(); bryde; misligholdelse: $bil = nye ussedanfactory(); pause.} tilbage $bil;) //- fabrikken klasse til at opbygge det forenede kongerigeklasse ukcarfactory gennemfører carfactory baseret center (offentlig funktion __construct() {} offentlig funktion buildcar ($) {$bil = ugyldig; skift ($) {"suv ': $bil = nye uksuvfactory(); bryde; sag" bil ": $bil = nye uksedanfactory(); bryde; default: $bil = nye uksedanfactory() og ødelægge;} tilbage $bil;}}, på dette tidspunkt har vi vores fabrik klasser klar, og det er tid til at skabe vores konkrete klasse.men som med fabrikken, og vi ønsker, at vores konkrete klasser, til at gennemføre nogle nødvendige metoder, som er fælles for alle konkrete klasser.,, grænseflade bil (offentlig funktion getlocation(); offentlig funktion gettype();}, har vi tilføjet meget grundlæggende metoder til vores fag for at få placering og type bil.nu vil vi gennemføre vores konkrete grupper som nedenfor.,, klasse ussuvfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = "os". $- > cartype = suv '} offentlig funktion getlocation() {tilbage $- > og beliggenhed) offentlig funktion gettype() {tilbage $- > cartype;}} klasse ussedanfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = "os". $- > cartype = sedan'} offentlig funktion getlocation() {tilbage $- > beliggenhed) offentlig funktion gettype() {tilbage $- > cartype;}} klasse uksuvfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = "uk". $- > cartype = suv '} offentlig funktion getlocation() {tilbage $- > beliggenhed) offentlig funktion gettype() {tilbage $- > cartype;}} klasse uksedanfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = "uk". $- > cartype = sedan'} offentlig funktion getlocation() {tilbage $- > beliggenhed) offentlig funktion gettype() {tilbage - - > cartype;}}, er vi færdige med gennemførelsen af vores konkrete klasser, som faktisk er genstand for en bil, der er baseret på placering og type bil.her, hvad der er tilbage, er at bruge denne gennemførelse for at se, hvordan vi løser vores problem er forklaret ovenfor, //os bilfabrik $usfactory = nye uscarfactory(); //os baseret suv model $ussuv = $usfactory - > buildcar ('suv) echo $ussuv - > getlocation(). "baseret på".$ussuv - > gettype(); //os baseret sedan model $ussedan = $usfactory - > buildcar ('sedan) echo $ussedan - > getlocation(). "baseret på".$ussedan - > gettype(); //uk - fabrikkerne $ukfactory = nye ukcarfactory(); //uk baseret suv model $uksuv = $ukfactory - > buildcar ('suv) echo $uksuv - > getlocation(). "baseret på".$uksuv - > gettype(); //uk baseret sedan model $uksedan = $ukfactory - > buildcar ('sedan) echo $uksedan - > getlocation(). "baseret på".$uksedan - > gettype();, kan man sige, at vi faktisk har skabt genstande af alle mulige typer af bil med stedet.vores klasser er velstrukturerede, så er der ikke meget at tilføje en ny fabrik.   , tilføjelse af en ny fabrik klasse, lad os forestille os en virksomhed har besluttet at starte en ny produktion center i australien.,,, som vores klasser er velstrukturerede, vil der ikke være et spørgsmål om tilføjelse af en nye klasse at bygge en bil genstand for den australske produktion center.  , //fabrik klasse at bygge aus baseret center klasse auscarfactory gennemfører carfactory {offentlige funktion __construct() {} offentlig funktion buildcar ($) {$bil = ugyldig; skift ($) {"suv ': $bil = ny aussuvfactory(); bryde; sag" bil ": $bil = nye aussedanfactory(); bryde; default: $bil = nye aussedanfactory(); pause.} tilbage $bil;}} //konkrete klasser til aus baseret center klasse aussuvfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = »aus. $- > cartype = suv '} offentlig funktion getlocation() {tilbage $- > beliggenhed) offentlig funktion gettype() {tilbage $- > cartype;}} klasse aussedanfactory gennemfører bil (private $placering privat $cartype; offentlig funktion __construct() {$- > placering = »aus. $- > cartype = sedan'} offentlig funktion getlocation() {tilbage $- > beliggenhed) offentlig funktion gettype() {tilbage $- > cartype;}} //aus bilfabrik $ausfactory = nye auscarfactory(); //aus baseret suv model $aussuv = $ausfactory - > buildcar ('suv) echo $aussuv - > getlocation(). "baseret på".$aussuv - > gettype(); //aus baseret sedan model $aussedan = $ausfactory - > buildcar ('sedan) echo $aussedan - > getlocation(). "baseret på".$aussedan - > gettype();, færdige, så vi har set, hvordan vi kan strukturere vores klasser på en sådan måde, at de kan forlænges, uden at foretage nogen ændringer til basen, klasser og kundekode.det er gratis at føje deres input i bemærkning nedenfor eller slik mig på @ xpertdevelopers.,,



Previous:
Next Page: