De ontwerp -

: in enkele gevallen - in enkele gevallen -, ontwerp -:,,,,,,,,,, 15, 1 eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen. En in dit artikel zal je leren hoe te komen tot een ontwerp - waarom singleton, als in de toepassing van het model.Zoals uit de naam van het "Single" blijkt dat deze aanpak stelt ons in staat om een slechts een soort object.  ,, laten we eens kijken wat we hebben over deze ontwerp - Wikipedia:,,, één zaak model is een soort beperking van de concretisering van een object van de modellen.Het is nuttig wanneer een object nodig coördinatie van het gehele systeem van maatregelen, zoals de definitie van de hierboven bedoelde, toen wij om ervoor te zorgen dat een object, maar een object nodig is om een soort, dan moeten we de verwezenlijking van dit soort interne model, kun je je afvragen waarom we moeten beseffen dat een soort, kunnen we het creëren van enige een object.Wat ik wil zeggen is, er zijn veel gebruiken, kunnen we de zaak met de ontwerp - model.Deze klasse omvat: de toewijzing, de zitting, database en meer.We zullen zien, wat het probleem kan worden als A singleton patroon is niet implemented voor dergelijke a.  ,,, het probleem, dat een zeer eenvoudige database, die verband creates klasse A verband met de database als we tot een voorwerp van dat.  , klasse, $dbName database (i = nul, nul $dbHost = en $dbPass = nul, $dbUser = nul; de openbare functie __construct ($dbDetails = (() {$this-> dbName = $dbDetails['db_name']; $this-> dbHost = $dbDetails['db_host']; $this-> dbUser = $dbDetails['db_user']; $this-> dbPass = $dbDetails['db_pass']; $this-> dbh = nieuwe BOB ('mysql:host='.$this-> dbHost.'; dbname='.$this-> dbName, $this-> dbUser, $this-> dbPass);}};,, in de hierboven.Bijvoorbeeld, je kan zien, elke keer dat je dit soort dingen, het is in verband met de database.Dus, als de ontwikkeling van personeel in de verschillende lokale tot deze klasse, dan zou je de database zullen creëren (dezelfde) databank die de hoeveelheid.Laten we zien of het creëren van een object van... Via dat $dbDetails = array (.,,'db_name'=>'designpatterns','db_host'=>'localhost','db_user'=>% quot% wortel,'db_pass'=>'mysqldba'); $duur = nieuwe database ($dbDetails); var_dump ($db1); $db2 = nieuwe database ($dbDetails); var_dump ($db2); $db3 = nieuwe database ($dbDetails); var_dump ($db3); $db4 = nieuwe database ($dbDetails); var_dump ($db4); ///////output object (databank) [1] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=> string'mysqldba'(length=8); of'dbUser'=> reeks% quot% wortel (length=4) openbare'dbh'=> voorwerp (BOB) [2] object (databank) [3]Privé'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=> reeks'mysqldba'(length=8) particuliere'dbUser'=> reeks% quot% wortel (length=4) openbare'dbh'=> voorwerp (BOB) [4] object (databank) [5] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'touw =>'localhost'(length=9) particuliere'dbPass'=> reeks'mysqldba'(length=8) particuliere'dbUser'=> reeks% quot% wortel (length=4) openbare'dbh'=> voorwerp (BOB) [6] object (databank) [7] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=> string'mysqldba'(length=8); of'd"= > het touw" wortel "(lengte = 4) openbare diameter = > doel (BOB) [8], als je de code en de produktie, zie je elk object heeft een nieuwe id, alle voorwerpen, is een geheel nieuw Referentie van het geheugen en de toewijzing van individuele.Dus, in de hoop op, we zullen de toepassing van middelen, dit is echt niet nodig, een oplossing te vinden, is dit niet aan onze controle, hoe de ontwikkeling van het gebruik van onze fundamentele kader.Het is onder onze controle gebeurt in het kader van de herziening van de code, maar in het proces van ontwikkeling, kunnen we niet altijd voor ze, om in zo 'n situatie, moeten we de basis van ons, is het niet mogelijk om een object, integendeel, het zal voor een reeds voorwerp als een.Dit is een van onze rekening moet houden met de ontwikkeling van een model voor enkele gevallen van de basis van ons soort omstandigheden, terwijl de uitvoering van het model, ons doel is om het scheppen van een klasse, maar een tijd.Maken me de code onder klasse te voegen en dan gaan we. Een deel van deze zal door een privé - database (., $dbName = nul, $dbHost = nul, $dbPass = nul, $dbUser = nul; de privé - statische $aanleg = nul; particuliere functie __construct ($dbDetails = (() {///////nota van dat deze is. - Constructor $this-> dbName = $dbDetails['db_name']; $this-> dbHost = $dbDetails['db_host']; $this-> dbUser = $dbDetails['db_user']; $this-> dbPass = $dbDetails['db_pass']; ///////- te verbinden aan de database van je. ///////$this-> dbh = nieuwe Bob ('mysql:host='.$this-> dbHost.'; dbname='.$this-> dbName, $this-> dbUser, $this-> dbPass)} openbare statische function verbindt; ($dbDetails =- (de)) {///////inspectie aanleg reeds bestaat, als (:: = = nul dollar {zelf: voorbeelden): $voorbeeld = nieuwe database ($dbdetails);} zelf terug:: $voorbeelden;} privé functie __clone () {///////Private functie __wakeup stoppen het klonen van voorwerpen () {} ///////stoppen met een voorwerp}}, is er weinig aanwijzingen dat de bovengenoemde categorieën, is één voorbeeld.Het eerste ding is een particuliere aannemer, kan het gebruik van nieuwe sleutelwoorden om te voorkomen dat het object creëren.Een indicatie is een variabele die een lid met de verwijzing naar een al. $dbDetails = - (,,,'db_name'=>'designpatterns','db_host'=>'localhost','db_user'=>% quot% wortel,'db_pass'=>'mysqldba'); $db1 = database:: Connect ($dbDetails); var_dump ($db1); $db2 = database: verbinding ($dbDetails:); var_dump ($db2); $db3 = database:: Connect ($dbDetails); var_dump ($db3); $db4 = database:: Connect ($dbDetails); var_dump ($db4); ///////output object (databank) [1] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=>'mysqldba'(length=8); reeks particuliere'dbUser'=> reeks% quot% wortel (length=4) pUblic'dbh'=> voorwerp (BOB) [2] object (databank) [1] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=> reeks'mysqldba'(length=8) particuliere'dbUser'=> reeks% quot% wortel (length=4) openbare'dbh'=> voorwerp (BOB) [2] object (databank) [1] privé'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'=> reeks'localhost'(length=9) particuliere'dbPass'=> reeks'mysqldba'(length=8) particuliere'dbUser'=> reeks% quot% wortel (length=4) openbare'dbh'=> voorwerp (BOB) [2] object (databank) [1] particuliere'dbName'=> reeks'designpatterns'(length=14) particuliere'dbHost'touw =>'localhost'(length=9) particuliere'dBpass "= > kolom (lengte = 8) mysqldba" privé "en" = > het touw "wortel" (lengte = 4) openbare diameter = > doel (BOB) [2], als je tussen de twee delen van de produktie, en je zult het zien, in enkele gevallen van takken van produktie, de middelen voor alle verschillende objecten met dezelfde id is.Maar dat is niet zo, toen het ontwerp is nutteloos.,, enig kind als een anti - patroon van deze ontwerp - ook bekend als anti - patroon, om verschillende redenen, zou ik als volgt:,, genoemd, die in strijd zijn met het beginsel van de controle door de gemeenschappelijke verantwoordelijkheid   oprichting zelf en de Kwaliteit van de hele levenscyclus het bevat. De staat van uw aanvraag.Ik zou zeggen, de landen zeer slecht is, omdat de waarde van elke code kan het veranderen.Dus in de tijd beter moeilijk te vinden dat een deel van de code is geboekt in de huidige fase van de variabelen, alleenstaande is een slecht idee, als je doet wat de eenheid getest, en het is altijd een slecht idee niet eenheid testen uitvoeren.Hopelijk vind je dit artikel is erg helpen.We hebben deze twee aspecten van de patroon, het is als een ontwerp - model, als een anti - model, alsjeblieft. En uw opmerkingen, voorstellen en /of het volgende probleem, ik zal zo snel mogelijk antwoord op mijn reactie.Je kan ook op Twitter @ xpertdevelopers of e - mail ik meteen contact met me op,,.



Previous:
Next Page: