Categoria: contenidor d'injecció de dependència

Guia d'inici ràpid Symfony DI (injecció de dependència) Tutorial

Per , dissabte 14 agost 2010 02:21 pm

Què és la injecció de dependències (DI)?

La injecció de dependència és una tècnica que permet als objectes dèbilment acoblats dins d'una aplicació de programari. En general, si un objecte requereix l'accés a la funcionalitat d'un altre seria una instància interna que porta els sistemes fortament acoblats. Mitjançant l'aplicació de la injecció de dependència que s'injecten els objectes necessaris llestos per al seu ús (de vegades també s'ha referit a la inversió de control - COI). Prenguem l'exemple següent:

  <? Php
 classe DecisionMaker {
     makeDecision funció pública (array $ paràmetres) {
         / / Necessita l'adaptador de base de dades
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ paràmetres);
         / * ...  Decisió una mica més de lògica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Aquest fragment de codi es diu que és fortament acoblat amb l'objecte DecisionParameters. La reescriptura de l'anterior en un sentit ambigu que hauríem una mena ....

  <? Php
 classe DecisionMaker {
     privat $ _dp;
     public function __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     makeDecision funció pública (array $ paràmetres) {
         $ ParameterScore = $ this-> _dp-> getScore ($ paràmetres);
         / * ...  Decisió una mica més de lògica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Mentre que obtenir els beneficis del codi dèbilment acoblats estem afegint una complexitat tal que cada vegada que un objecte és una instància que també hem de crear instàncies de les seves dependències i en passar aquests també. Per exemple, això:

  $ = Elecció DecisionMaker nou ();
 echo $ opcions-> makeDecision (array ('esforç' => 'sota', 'return' => 'alta')); 

ara es converteix en:

  $ Dp = new DecisionParameters ();
 $ Opcions = new DecisionMaker ($ dp);
 echo $ opcions-> makeDecision (array ('esforç' => 'sota', 'return' => 'alta')); 

Aquesta situació es torna més dolorós que el nombre de dependències d'una classe és més gran, i el que si les dependències s'han dependències? Això pot molt ràpidament convertir-se en un malson per a l'administració d'objectes! Introdueixi els contenidors injecció de dependència (o marcs) ...
Continue reading 'Symfony d'inici ràpid DI (injecció de dependència) Tutorial' »













Panorama Tema per Themocracy

7 visitants en línia ara
5 hostes, 2 bots, 0 membres
Max visitants d'avui: 17 a 13:34 UTC
Aquest mes: 17 a 2011.01.09 23:27 UTC
Aquest any: 130 en 2011.03.28 22:40 UTC
En total: 130 en 2011.03.28 22:40 UTC