Hoe de code,

verandering, hoe ze de code, verandering,,,,,,,,,,,, 183 - eenheid,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, code te schrijven, dat is makkelijk te veranderen is de programmering van de heilige graal.Welkom bij de programmering van de hemel.Maar de dingen moeilijker in de realiteit: de source code is moeilijk te begrijpen, afhankelijk van wat in talrijke richtingen, koppeling is walgelijk, dan voel je je snel warmte van de programmering van de hel.In deze handleiding, zullen we over een aantal beginselen, methoden en concepten, zal je helpen bij het schrijven is makkelijk te veranderen van de code.,,,, het concept van een object, oop begon, als gevolg van de code van de organisatie en de inzet van het hergebruik van het geen in dit. In een streven.We hebben het doel gerichte concepten voor vele jaren, maar we blijven ons herhaaldelijk in dezelfde logica in de uitvoering van het project.OEPS, een van de fundamentele beginselen van goede, indien goed gebruikt, kan zorgen voor een betere en schonere code, cohesie, die behoren tot de samen in elkaar gezet; anders moeten ze naar elders.Dit is een woord, condensatie, betekent niets.Het beste voorbeeld kan worden aangetoond dat: de samenhang van een klasse, van de klasse van anotcohesiveclass (particuliere firstnumber $; particuliere secondnumber; particuliere lengte; de breedte van de functie van het doek. __construct (firstnumber dollar, secondnumber) {% dit > firstnumber = $firstnumber; de dollar - > secondnumber = $secondnumber; de lengte van de functie van de buffer. (lengte) {% dit > lengte = $lengte;} functie SetHeight ($) {% dit > breedte = $() {terugkeer hoogte;} functie dollar - > firstnumber + $dit > secondnumber;} functie aftrekken () {terugkeer dollar - > firstnumber - dollar - > secondnumber;} functie terug te keren naar gebied () {dollar - > lange * dollar - > breedte;}}, dit voorbeeld op het gebied van de definitie van een klasse, rDe omvang en het aantal van de uitdrukking.Deze eigenschap, alleen door hun namen te oordelen, niet bij elkaar horen.Dan hebben we twee methoden,,,,, substract () (), die slechts twee variabelen.We hebben een, Area (), methoden en praktijken, lengte, breedte, en, op het gebied van, het is duidelijk dat deze informatie alleen verantwoordelijk is voor de groep.En het zeer lage cohesie.Laten we de herstructurering van het particuliere firstnumber, klas. Acohesiveclass {dollar; de particuliere secondnumber dollar; de functionele __construct (firstnumber dollar, secondnumber) {% dit > firstnumber = $firstnumber; de dollar - > secondnumber = $() {terug secondnumber;} functie dollar - > firstnumber + $dit - > secondnumber;} functie terug aftrekken () {dollar - > firstnumber - dollar - > secondnumber;}}, dit is een zeer samenhangend klasse.Waarom?Omdat dit soort elk deel van een ander.Je moet streven naar cohesie, maar dat is moeilijk te realiseren, in het kader van een eenvoudige voorwaarden, van de kant van de orthogonale verwijst naar de scheiding of om een einde te maken aan de gevolgen.Een methode, een soort of module voor de klasse of andere onafhankelijke modules voor niet - loodrecht staat veranderen.Bijvoorbeeld, de vliegtuigen zwarte dozen is loodrecht.Het is de interne werking van de interne energiebron, de microfoon en sensoren.Het is niet van invloed op het leven in een vliegtuig, of in de rest van de wereld.Het biedt een opname en herstel van de vluchtgegevens mechanismen, zoals een niet - orthogonale systeem van je auto elektronische apparatuur.De verbetering van de snelheid van je auto een paar bijwerkingen, zoals de verhoging van het volume van de radio (onder andere).De snelheid van de auto waarin gebruik is niet.Klasse, rekenmachines (particuliere firstnumber dollar; particuliere secondnumber dollar; de functionele __construct (firstnumber dollar, secondnumber) {% dit > firstnumber = $firstnumber; de dollar - > secondnumber = $() {} functie secondnumber; bedrag = dollar - > > firstnumber + $dit; secondnumber; Als ($en > 100) {(nieuwe alertmechanism ()) - > toobignumber (voor een bedrag van USD);}} functie terug te keren naar de bedragen aftrekken (;) {terugkeer dollar - > firstnumber - dollar - > secondnumber;}} {categorie alertmechanism functie toobignumber (in dollars) {ECHO $. "Te groot voor.;}}, in dit geval, rekenmachines, deze methode () bleek onverwacht gedrag: het creëren van een object, alertmechanism, en verzoekt haar een van de methoden.Dit is onverwacht en niet de nodige besluiten van de consumenten; zal nooit verwachten dat een gedrukte informatie naar het scherm.Integendeel, ze willen alleen de cijfers voor de som van de klasse (particuliere firstnumber dollar, een rekenmachine, particuliere secondnumber dollar; de functionele __construct (firstnumber dollar, secondnumber) {% dit > firstnumber = $firstnumber; de dollar - > secondnumber = $() {terug secondnumber;} functie dollar - > firstnumber + $dit > secondnumber;} functie terug aftrekken () {dollar - > firstnumber - dollar - > secondnumber;}} {categorie alertmechanism functie checklimits (firstnumber dollar, secondnumber) {% bedrag = (nieuwe rekenmachine (firstnumber dollar, secondnumber)) - > (); als ($en > 100) {% dit > toobignumber (voor een bedrag van USD);}} functie toobignumber (in dollars) {ECHO $. "Te groot voor.}, dat is beter.En alertmechanism, heeft geen invloed op de rekenmachine.Integendeel, het gebruik van een alertmechanism nodig, om te bepalen of een waarschuwing en moet, afhankelijk van de koppeling, in de meeste gevallen, twee woorden die onderling verwisselbaar zijn; echter, in sommige gevallen, een beter is dan een ander, wat is het dan, afhankelijk van?Als het doel, een, vereist het gebruik van voorwerpen, b, met het oog op de tenuitvoerlegging van de bepalingen van de Akte, laten we zeggen, een, hangt ervan af, b.- OEPS, afhankelijke relatie is heel algemeen.Doel vaak werk en afhankelijk van een ander voorwerp.Dus, hoewel de uitbanning van afhankelijkheid is een nobel doel, maar het is bijna onmogelijk.Controle en vermindering van de afhankelijkheid van, maar het beste van het beste, in een los gekoppeld systeem, een object veranderen in een voorwerp is van een vereenvoudiging van het systeem van de koppeling in een los gekoppeld systeem, in een object in het algemeen, in de zin van een object op de andere als afhankelijk van het hangt af van het andere.In een dergelijk systeem, afhankelijk zijn van de interface in plaats van uitvoering (we zullen later worden besproken).Dit is de reden waarom de los gekoppeld systeem gemakkelijker te wijzigen. De aanwezigheid van de koppeling, laten we een voorbeeld geven:, {particuliere $rekenmachine; de functionele __construct () {% dit > rekenmachine = nieuwe rekenmachine (1,2);}}, dat dit soort code is zeer vaak zie.Een soort, dat in dit geval, afhankelijk van de rekenmachine, door directe verwijzingen naar de klasse.In dit deel van de code, blijkt dat, rekenmachines, gebied vormen, een rekenmachine,.Dit veld bevat de resultaten rechtstreeks bellen, rekenmachines, fabrikant van voorwerpen in de andere categorieën, door de toegang tot de methode voor het aantonen van de koppeling, de koppeling van de volgende code waarin {particuliere $rekenmachine; de functionele __construct () {% dit > rekenmachine = nieuwe berekening (1, 2);} {ECHO deze functie printsum ()% GT% rekenmachine - > ();}}, dat, klas, rekenmachines, gerichte benadering ().Dit is een andere vorm van koppeling van een soort, want door verwijzing naar een methode voor de toegang tot de andere, door verwijzing naar een methode met een methode, kan je naar de klas.Bijvoorbeeld, de klasse tonen particuliere ${rekenmachine; de functionele __construct () {% dit > rekenmachine = dollar - > makecalculator (); deze functie printsum (} {')% GT% rekenmachine - > (}); functie terug te keren naar de nieuwe rekenmachine makecalculator () {(1, 2);}}, opgemerkt moet worden dat, makecalculator () is belangrijk voor de terugkeer van een voorwerp, een rekenmachine.Dit is een afhankelijkheid van de diversiteit, koppeling, die het sterkste is, afhankelijk van de categorie vormen: verlenging van advancedcalculator rekenmachine {sinus (dollars) {terugkeer misdaad (waarde);}}, kan niet alleen advancedcalculator, niet van hun werk te doen, maar het is geen rekenmachine, zelfs niet bestaat, het door De de afhankelijkheid van de injectie, vermindering van de koppeling, door de injectie kan afhankelijk zijn van de koppeling.Dit is een voorbeeld van een dergelijke, aan particuliere: {dollar (USD __construct rekenmachine; rekenmachine rekenmachine = nul) {% dit > rekenmachine = $rekenmachine?: de dollar - >; ///////makecalculator (}).Door de injectie, rekenmachines, object door de constructeur, we zien verminderen, dat, afhankelijk van een rekenmachine.Maar dit is de oplossing van de helft van de vermindering van de koppeling van de interface, kan een verdere daling van de koppeling van de interface.Bijvoorbeeld: () {berekening van functies, interfaces; aftrekken (); het niveau van persoonlijke computers {} firstnumber dollar; particuliere secondnumber dollar; de functionele __construct (firstnumber dollar, secondnumber) {% dit > firstnumber = $firstnumber; de dollar - > secondnumber = $() {} functie terug secondnumber; de dollar - > firstnumber + $dit > secondnumber;} functie terug aftrekken () {dollar - > firstnumber - dollar - > secondnumber;}} {categorie blijkt dat de particuliere $rekenmachine; de functionele __construct (berekend voor berekening van USD = nul) {% dit > rekenmachine = dollar rekenmachine?: de dollar - > makecalculator (); deze functie printsum (} {')% GT% rekenmachine - > (}); functie terug te keren naar de nieuwe rekenmachine makecalculator () {(1, 2);}}, kan je dat ISP' s voor de cohesie, het beginsel van de invoering van deze code.,, berekend. De interface.Een interface kan je in het abstracte definitie van gerichte; lid van een soort moet worden bereikt.In bovenstaand voorbeeld, zodat de rekenmachine, te bereiken, de berekening en de interface van de fabrikant.,,, de noodzaak tot een object, berekend.Op dit punt blijkt, afhankelijkheid, rekenmachines, effectief is gebroken.Op enig moment, kunnen we tot een soort berekend, en dat, door middel van de klasse, een aannemer.Nu, dat uitsluitend afhankelijk is van de berekening van de interface,,, maar zelfs deze afhankelijkheid is facultatief.Als we niet over de fabrikant, blijkt, kan dat alleen maar het creëren van een klassieke, door een beroep te doen op de rekenmachine, voorwerpen, makecalculator ().Deze techniek is gebruikt, en het is tdd betekent erg behulpzaam.,, solide beginselen, is een groep van schrijven schoon de beginselen van de code, zodat het gemakkelijker te veranderen, het onderhoud en de toekomstige uitbreiding.Ze stelt voor dat, wanneer de toepassing aan de bron te handhaven, een positief effect hebben. Een beetje geschiedenis, solide beginselen, ook bekend als onze beginselen, die aanvankelijk door de definitie van Robert C. Martin.Zelfs als hij niet het creëren van al deze principes, maar hij zet ze samen, man.Je kunt in z 'n boek lees meer over z' n boek: - ontwikkeling van programmatuur, de beginselen, de wijze en de praktijk.Vaste beginselen omvat een breed scala van thema 's, maar ik kan op een eenvoudige manier om blijk te geven van hun vermogen.Vragen of opmerkingen moeten in de details, de gemeenschappelijke verantwoordelijkheid beginsel (SrP), een soort heeft een verantwoordelijkheid.Het klinkt eenvoudig, maar soms is het moeilijk te begrijpen is en in de praktijk te brengen, klas generateincomereports () () {generatepaymentsreports journalisten functie; de functionele computebalance (); de functionele printreport ();}, wie denk je dat de voordelen van dit soort gedrag?Het Ministerie van financiën is een optie voor de financiële sector saldo), kan een andere (inkomsten /betalingen verslag), of zelfs de archivering van kunnen drukken en de indiening van verslagen.Er zijn vier redenen,,, misschien moet je veranderen van dit soort; de diensten kunnen hun methoden aanpassen aan hun behoeften,., SrP wordt voorgesteld om in kleinere gedrag, zo 'n klasse, specifieke categorieën, elk slechts één reden om dat te veranderen.Deze cursussen worden vaak zeer cohesie en los te koppelen.In zekere zin is vanuit het oogpunt van de gebruikers bij SrP van definities, in beginsel open (OCP), categorie (module) moeten met hen een uitbreiding van de taken en weerstand te bieden aan de huidige functie te wijzigen.We spelen een klassiek voorbeeld van een ventilator.Heb je een schakelaar, wil je de controle fan.Dus, je kan schrijven deze zin:, switch_ {particuliere $fan; de functionele __construct () {% dit > fan = nieuwe fan (); de functie van turnon (}) {% dit > fan > op de functie van turnoff;} () () {% dit > fan > - (de);}}, erfenis, is de sterkste vorm afhankelijk zijn. Dit deel van de code, en de definitie van een klasse, switch_, creëren en de controle van, een fan, een object.Let op de "switch_" onderstreept.PHP is niet toestaan dat je met de naam "over de definitie van een". En je baas dat hij wil controle over de lamp.Dit is een probleem, want je moet veranderen, switch_,., op een wijziging van de bestaande code is een risico; de andere delen van het systeem kan worden aangetast, moeten verder worden gewijzigd.Het is altijd het beste uit de huidige functie van de functionlaity, de toevoeging van nieuwe, gerichte programma 's van de terminologie in, zoals je kan zien, switch_, zijn sterk afhankelijk van de ventilator.Dat is ons probleem, en we moeten onze veranderingen interface - {functie op (); de functionele. (); de fan. - {} uitvoering van openbare functies op () {} van de functie van de code beginnen. ///////////////() {}} {code stop ventilator privé - lessen switch_ dollar. -; __construct (kan worden overgeschakeld op kan worden omgezet) {% dit > - = $- functie;} turnon () {% dit > - > op de functie van turnoff;} () () {% Dit > - >. ();}}, dat een oplossing wordt, - de interface.Het is de definitie van alle voor de uitvoering van de doelstellingen nodig.Fan, dat de overschakeling,,,, switch_, instemmen met een verwijzing naar een overdracht van de fabrikant, in de objecten.,, hoe helpt dat ons?Ten eerste, een oplossing die, afhankelijk van switch_, gebroken, fan.Weet het niet, switch_, start een fan, het kan me niet schelen.Ten tweede, de invoering van een soort, lichte, niet van invloed zijn op de switch_ of overdracht,,,.Je moet de controle van een object, licht, je switch_, klas?De totstandbrenging van een object, licht, en via het switch_, zoals:, licht en dat de overschakeling op openbare functies () {{code om het licht in de openbare taken van ///////////////()} {}} {code categorie lichten somewhereinyourcode functie controllight () {% licht = nieuwe licht (); $over = nieuwe switch_ (合光); $over de > turnon (); de $over de > turnoff (}), gericht is); de beginselen van vervanging, provider zegt dat voor de subcategorie van de moedermaatschappij niet moeten breken.Dit is zeer belangrijk, omdat de moeder van de verwachtingen van de consument in een klasse van de handelingen tot op zekere hoogte.De consument moet door middel van subcategorie alleen werken en niet van invloed is op de oorspronkelijke functie, dit is verwarrend, dus laten we in een klassiek voorbeeld zien, de breedte van de rechthoek {canvas; particuliere $hoogte; de functionele setwidth ($breedte) {% dit > breedte = $breedte (hoge functie setHeigth dollar;}) {% dit > lengte = $hoge functie terug te keren;}: () {dollar - > w * dollar - > hoogte;}}, dit voorbeeld wordt een eenvoudige, langwerpig, met klasse.We kunnen het vaststellen van de hoogte en breedte en een (), voor het gebied van de rechthoek.Het gebruik van een rechthoek, klasse, kan deze als volgt: de functie van de geometrische {, RectArea (rechthoekig vierkante rechthoekige dollar) {% > setwidth (10 dollar); rechthoekig > setHeigth (5); de terugkeer van de rechthoekige > ruimte ();}},, rectarea (), een methode aanvaard, rechthoekig object, als een parameter, het vaststellen van de hoogte en breedte van de regio 's, en terug te keren naar de vorm, op school, we hebben geleerd van de rechthoekige Square.Het blijkt dat als we onze procedures aan de geometrische objecten van ons model, een vierkant, een soort, de uitbreiding van de rechthoek, klasse.Zo 'n soort eruit?Deze uitbreiding, rechthoekig (///////- code te schrijven?}, ik heb een heel moeilijk uit te maken wat geschreven op de, vierkant, klasse.We hebben meerdere opties.We kunnen het gebied (), methoden, terug naar het plein, de breedte van de dollar, de categorie: bescherming van rechthoekige (breedte en hoogte dollar; de bescherming van...///////) wordt een rechthoekig (functionele klasse () {terugkeer dollar - > breedte ^ 2;}}, dat ik veranderd, rechthoekig gebied, de bescherming van aan de Plaza, in deze gebieden.Vanuit het oogpunt van de geometrie, dit is redelijk.Een vierkant met zijden van dezelfde, de terugkeer van de vierkante redelijk is, maar we hebben een probleem vanuit het oogpunt van de programmering.Als, vierkant, is een rechthoekig, dat moet geen probleem zijn, het in de geometrie, klasse.Maar door dat te doen, zoals je kan zien, de geometrische, code en van weinig betekenis, het voorzien van twee verschillende waarden van de hoogte en breedte.Dit is de reden waarom een vierkant, niet een rechthoekige programmering.Schending van het beginsel van de scheiding van de provider, interface (ISP 's), eenheid testen moeten snel, heel snel,., dit beginsel gericht op het verbreken van het grote interface in kleine, gespecialiseerde interface.De onderliggende gedachte is, een soort van verschillende consumenten niet moet weten dat de verschillende interfaces - alleen de interface van de behoeften van de gebruikers.Als een consument en zonder gebruik te maken van alle openbare middelen in een voorwerp, die nog steeds afhankelijk van de methode van alle.Dus waarom niet alleen voor de interface, voor elke gebruiker van de verklaring nodig?Het is in de buurt, de interface moet deel uitmaken van de cliënt, in plaats van uitvoering.Als je je op het verbruik van aangepaste interface, ze respecteren de ISP 's.Dat kan zelf is uniek, als een soort kan enkele interface, laten we ons eens voorstellen dat we een beurs aanvragen.We hebben een koop en verkoop van aandelen en obligaties, kan het verslag van de dagelijkse winst en verlies.Een heel eenvoudig te verwezenlijken, met inbegrip van als, makelaars, interfaces, nysebroker, tot categorie, makelaars, en sommige gebruikers interface: een voor het creëren van de transactie (, transactionsui,) en van een verslag (, dailyreporter,).Voor een dergelijk systeem kan de code vergelijkbaar is met het volgende:, - agent {functie te kopen (dollar teken, $); de functionele verkopen (dollar teken, $); de functionele dailyloss ($); de functionele dailyearnings ($);} {openbare functies te kopen nysebroker makelaar (dollartekens en de volume) {///////implementsation gaat hier} openbare functie currentbalance () {///////implementsation gaat hier} openbare functie dailyearnings ($) {///////implementsation gaat hier} openbare functie dailyloss ($) {///////implementsation gaat Hier} openbare functies te verkopen (dollar teken, $) {///////implementsation naar hier}} - transactionsui {particuliere $makelaars; de functionele __construct (makelaars voor makelaars) {De dollar - > makelaars = $makelaars;} functie () {///////buystocks BU logica om informatie te verkrijgen van een dollar in de vorm van gegevens - > makelaardij > aankoop van ($gegevens'sybmol "] [, ['] gegevens dollar);} functie () {///////sellstocks logica om informatie te verkrijgen van de bu een dollar in de vorm van gegevens - > makelaardij > verkopen (dollar'sybmol gegevens [], [...] dollar gegevens");}} {categorie dailyreporter particuliere $makelaars; de functionele __construct (makelaars voor makelaars) {% dit > makelaars = als makelaar; vandaag currentbalance () {'} voor de lopende rekening van de betalingsbalans functie.Datum (time ()). ""ECHO" inkomen.De dollar - > makelaardij > dailyearnings (time ()). ""ECHO" verliezen.De dollar - > makelaardij > dailyloss (time ()). "N ";}}, en deze code kan werken. Dit is in strijd met de ISP 's.Tegelijkertijd transactionui, afhankelijk van dailyreporter,,, makelaars, interface.Maar ze elk slechts een gering deel van de interface.Transactionui, gebruik, kopen, verkopen, () (), voor het dailyreporter, het gebruik, de dailyearnings () (), dailyloss,,.,, zou je kunnen zeggen, agent, niet omdat het niet relevant is voor de methode van de cohesie, dus niet bij elkaar passen, kan dat waar zijn het antwoord hangt af van de uitvoering, maar op dit moment kunnen zijn, agent, de verkoop van de verliezen en winsten zijn nauw met elkaar verbonden.Bijvoorbeeld, je kan niet worden toegestaan als je verliest geld, je kunt kopen op de beurs, is ook van mening dat de agent, is ook in strijd met de prijs.Want we hebben een klasse 2, gebruik te maken van het op een andere manier, mogelijk zijn twee verschillende gebruikers.Oké, ik zei dat niet. De enige gebruiker is het echte agenten.Hij /zij willen kopen, verkopen, om ze nu te financieren.Maar het echte antwoord hangt af van de activiteiten van het hele systeem, dat is in strijd met de ISP 's.De gebruikersinterface is afhankelijk van twee soorten geheel, agent.Dit is een algemeen probleem, als je denkt dat de interface van de uitvoering ervan.Maar je van gedachten veranderen, kan het volgende ontwerp: interface, brokertransactions {kopen (dollar teken, $); de functionele verkopen (dollar teken, $);} {functionele interface brokerstatistics dailyloss ($); de functionele dailyearnings ($); de verwezenlijking van brokertransactions nysebroker} klasse, brokerstatistics {openbare aankoop functie (dollar teken in volume) {///////implementsation gaat hier} openbare functie currentbalance () {///////implementsation gaat hier} openbare functie dailyearnings ($) {///////implementsation gaat hier} openbare functie dailyloss ($) {///////implementsation gaat hier} openbare functies te verkopen (dollar teken, $) {///////implementsation gaat hier}} ClDe ezel transactionsui {particuliere $makelaars; de functionele __construct (brokertransactions $makelaars) {% dit > makelaars = $makelaars;} functie () {///////buystocks BU logica om informatie te verkrijgen van een dollar in de vorm van gegevens - > makelaardij > aankoop van ($gegevens [] [de] gegevens'sybmol, $) sellstocks () {} functie; ///////BU logica om informatie te verkrijgen van een dollar in de vorm van gegevens - > makelaardij > verkopen (dollar'sybmol gegevens [], [...] dollar gegevens ");}} {categorie dailyreporter particuliere $makelaars; de functionele __construct (brokerstatistics $Makelaar Makelaar) {% dit > = $makelaar; vandaag currentbalance () {'} voor de lopende rekening van de betalingsbalans.Datum (time ()). ""ECHO" inkomen.De dollar - > makelaardij > dailyearnings (time ()). ""ECHO" verliezen.De dollar - > makelaardij > dailyloss (time ()). "N ";}}. In feite is dit een zinvolle en respect voor ISP 's.Alleen, dailyreporter, hangt af van brokerstatistics. Het kan me niet schelen, en zonder te weten welke transacties.Transactionsui,,, en aan de andere kant, maar weet dat de koop en verkoop.Ja, nysebroker, onze voormalige categorie dezelfde, behalve dat het nu, brokertransactions brokerstatistics interface,,,.,, je kan bedenken voor de cohesie, het beginsel van de ISP 's. Als BU vormen van afhankelijkheid, makelaars, interfaces, ze lijken op twee soorten, de vier gebieden in deze twee mogelijkheden het gebruik van Een andere methode, voor de andere twee.De studenten zijn niet zo nauw, een meer complexe van dit beginsel kunnen de voorbeelden in een Robert C. MARTIN Eerste onderwerp: het beginsel van de scheiding van het beginsel van de omkering van de interface, afhankelijk van (...), een beginsel dat de landen, een hoog niveau van modules moet niet gebaseerd zijn op een laag niveau van module; beide moeten afhangen van de produktie.Abstract mag niet afhankelijk zijn van de details moet afhankelijk zijn van de produktie.Simpel gezegd, je moet zoveel mogelijk afhankelijk van abstracte, nooit voor de uitvoering van de methode is, gebruik de dip je wil veranderen, afhankelijk van de totale controle te houden, maar de mobiliteit.Laten we terug naar ons voorbeeld (OCP, schakelaars, licht).De verwezenlijking van de in de eerste, hebben we een schakelaar, directe controle een licht, zoals je kunt zien, afhankelijk van de controle - en, stuurinrichting, licht.Maar dit is wat we willen, we willen niet rechtstreeks afhankelijk zijn van het licht.Dus we zijn gestart met een interface,,, het is verbazingwekkend hoe de invoering van een interface, waardoor we de code en de hoek van OCP.Zoals je kunt zien, hangt af van de concrete uitvoering van het licht, het licht en de,,, en, schakelaars, afhankelijk zijn, kunnen overschakelen, de interface.Onze afhankelijkheid van de controle, en de stroom is ongewijzigd blijven, een hoog niveau van ontwerp, een andere belangrijke aspecten van de code, je was je geavanceerde ontwerp - en het algemene kader.De structuur van een verstrengeling van die code is moeilijk te wijzigen.Het behoud van een schone gebouw is van essentieel belang, de eerste stap is om onderscheid te maken tussen de verschillende hoe je de code van de problemen in deze foto 's, ik probeer een samenvatting van de voornaamste problemen.In het centrum van het model is onze logica.Het moet met andere delen van de wereld kan niet geïsoleerd, en in andere delen van de aanwezigheid van werk en prestaties, en niet het bestaan van een ander deel van de bestaande.Vanaf het begin, je hebt je "grote" - het punt van binnenkomst van de aanvraag en het doel van de fabriek.Een ideale oplossing van de specialisatie in de fabriek van het object, maar het is bijna onmogelijk, of niet.En als je een kans om dit te doen, wanneer je gebruik moeten maken van de fabriek, en leg ze in uw logica, en, in de bodem (oranje), hebben we een persistente (databanken, toegang tot het dossier, communicatie), het houden van informatie.Niet in de logica van ons doel moet weten hoe de duurzame werken, aan de linkerkant is een mechanisme van overdracht, zoals laravel MVC.,, of het moet worden geleverd, maar het mechanisme, dat is alles. En dat je een mechanisme voor de uitwisseling met een ander niet aanraken met je logica.Dit klinkt een beetje ver van je.We hebben gezegd dat we de logica moeten in ons model.Oké, ben ik het niet mee eens.We moeten de modellen "verzoek model", dat wil zeggen de domme gegevens het voorwerp van de logica van de MVC voor het doorgeven van informatie.Of, ik denk niet dat het probleem in de in het model, met inbegrip van de validering van de input, maar meer niet.Als je naar je aanvraag architectuur of gids, je moet een beschrijving van het programma en de structuur, gebruik je de verschillende punten kader of een databank, en ten slotte om ervoor te zorgen dat alle afhankelijkheid op onze logica.De gebruikersinterface, fabrieken, de database zijn heel concrete uitvoering, je moet niet afhankelijk van ze zijn.Wijst op de logica van ons afhankelijk zal zijn van het modulaire systeem te veranderen, afhankelijk van onze zonder wijziging van de logica, de ontwerp -., over nadenken, ontwerp - code gemakkelijker te wijzigen, een belangrijke rol spelen door te voorzien in een gemeenschappelijke oplossing voor het ontwerpen van elke programmeur kan begrijpen.Vanuit het oogpunt van de structuur van de ontwerp - model, een duidelijk voordeel.Ze testen en weloverwogen oplossing.,, als je meer wilt weten over ontwerp - model, en ik heb een + cursussen voor ze.De kracht van de gestuurde ontwikkeling aan te moedigen gemakkelijk de code testen.De eerbiediging van de beginselen van tdd dwingt je om de code te testen.In voorbereiding is en waarin de afhankelijkheid van nodig, anders zul je een grote test methode.Test van de eenheid moet zeer snel, in feite, alle dingen proeven moeten worden bespot.Na de vele complexe, een simpele test kan overweldigend zijn.Dus als je met tien tegen één methode voor het testen van een klasse, zou je misschien een probleem hebben met je code.Niet je examen, tot slot, de ideeën, aan het eind van de dag, het komt allemaal neer op de source code voor je zorgen.Heeft de technische kennis is niet genoeg, je moet nog een keer bij de toepassing van deze kennis, nooit tegen je code was 100% tevreden.Je moet de code die je gemakkelijk onderhoud, reiniging en open voor veranderingen, bedankt voor het lezen en het gevoel van je vrijheid van de technische bijdrage tot de volgende opmerkingen.






Previous:
Next Page: