Ametikohad tagged: sõltuvust süsti

Quick Start Symfony DI (Sõltuvus Injection) Õpik

Autor , laupäev 14. august 2010 14:21

Mis on sõltuvust süsti (DI)?

Sõltuvust süsti on tehnika, mis võimaldab nõrgalt sidestatud objektide tarkvaraga. Üldiselt, kui objekt nõuab juurdepääsu funktsionaalsust teine ​​oleks konkretiseerita sisemiselt viib tihedalt sidestatud süsteemid. Rakendades sõltuvust süsti me süstida nõutud esemeid kasutusvalmis (mõnikord nimetatakse ka inversioon kontroll - ROK). Võtke järgmine näide:

  <? Php
 klassi DecisionMaker {
     avalikke ülesandeid makeDecision (array $ parameetrid) {
         / / Vajadus andmebaasi adapter
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ parameetrid);
         / * ...  Veel otsust loogika ...  * /
         return ($ parameterScore> 50);
     }
 } 

See tükk kood on väidetavalt tihedalt ühendatud DecisionParameters objekt. Ümberkirjutamine eespool nõrgalt sidestatud mood me tahaks olla midagi ....

  <? Php
 klassi DecisionMaker {
     era $ _dp;
     avalik funktsioon __ konstruktsioon ($ dp) {
         $ This-> _dp = $ dp;
     }
     avalikke ülesandeid makeDecision (array $ parameetrid) {
         $ ParameterScore = $ this-> _dp-> getScore ($ parameetrid);
         / * ...  Veel otsust loogika ...  * /
         return ($ parameterScore> 50);
     }
 } 

Kuigi üha kasu nõrgalt sidestatud kood lisame keerukust selline, et iga kord, kui objekt on instantiated meil on ka instantiate oma sõltuvusi ja andke need ka. Näiteks selline:

  $ Valik = new DecisionMaker ();
 echo $ valik-> makeDecision (array ('vaeva' => 'madal', 'Tagasi' => 'suur')); 

nüüd on:

  $ Dp = new DecisionParameters ();
 $ Valik = new DecisionMaker ($ dp);
 echo $ valik-> makeDecision (array ('vaeva' => 'madal', 'Tagasi' => 'suur')); 

Selline olukord muutub valulikuks, kui mitu sõltuvused klassi suurendatakse, ja mis siis, kui sõltuvused ise on sõltuvused? See võib üsna kiiresti muutuda objekti haldamine õudusunenägu! Sisesta sõltuvust süsti konteinereid (või raamistike) ...
Jätka lugemist "Quick Start Symfony DI (Sõltuvus Injection) Õpik" »













Panorama Theme poolt Themocracy

5 külalist nüüd
4 külalist, 1 bots, 0 liiget
Max Külastusi täna: 10 at 01:58 am UTC
Sel kuul: 56 at 25-04-2012 08:41 am UTC
Sel aastal: 69 at 27-02-2012 09:56 am UTC
Kogu aeg: 130 at 28-03-2011 10:40 UTC