Vra

Is daar'n kant af?Ek voel amper afhanklik van dit nou.Wanneer'n projek kry verby'n sekere grootte amper voel'n allergiese reaksie op standaard patrone en onmiddellik re-wire dit met'n Afhanklikheid Inspuiting raamwerk.

Die grootste probleem wat ek gevind het, is dit verwarrend kan wees vir ander ontwikkelaars wat net leer dit.

Ook, sou ek baie beter voel as dit was'n deel van die taal wat ek gebruik het.Al het, vir Java ten minste, daar is'n paar baie liggewig biblioteke wat is baie goed.

Gedagtes?Slegte ervarings?Of net ophou om bekommerd te wees oor dit?


[WYSIG] Re:Beskrywing van Afhanklikheid Inspuiting self

Jammer vir die feit dat vaag. Martin Fowler waarskynlik beskryf dit baie beter as wat ek ooit kon...geen behoefte om te mors nie die moeite.

Toevallig, dit bevestig een punt oor dit, dat dit is nog nie wyd beoefen en dalk geneig om te wees'n versperring by die werk met spanne as almal is nie op spoed op dit.

Was dit nuttig?

Oplossing

Ek het 'n steek geneem by die beskrywing van 'n paar van die moontlike nadele in 'n blog post hier: http://kevin-berridge.blogspot.com/2008/06/ioc-and-di-complexity.html

Ander wenke

Die probleem wat ek het met DI is die dieselfde probleem wat ek het met <URL> en met enige kode wat lyk iets soos:

i = GetServiceOrInterfaceOrObject(...)

Die probleem is dat so'n stelsel kan nie verstaan word van die kode.Daar moet dokumentasie iewers [anders] wat bepaal wat die diens/koppelvlak/voorwerp kan versoek word deur die diens/koppelvlak/voorwerp X.Hierdie documention moet nie net in stand gehou word, maar beskikbaar as maklik as die bron.

Tensy die dokument is baie goed geskryf, is dit dikwels nog steeds nie maklik om te sien die verhoudings tussen voorwerpe.Soms verhoudings is temporale wat maak hulle selfs moeiliker om te vind.

Ek hou van die KISS beginsel, en ek is'n sterk gelowige in die gebruik van die regte gereedskap vir die werk.As die voordeel van DI, vir'n gegewe projek, swaarder weeg as die behoefte om te skryf verstaanbare kode, as dit gebruik.

  

Ook, Ek sal voel baie beter as 't ware   'n deel van die taal wat ek gebruik het.

FYI is daar 'n baie eenvoudige en funksionele dependecy inspuiting as deel van JDK 6. As jy liggewig, maklik afhanklikheid inspuiting nodig het, gebruik dit dan.

Die gebruik van ServiceLoader klas wat jy kan versoek om 'n diens (of baie implementering van die diens) wat gebaseer is op 'n klas:

 package dependecyinjection;  
 import java.util.ServiceLoader;  

 public abstract class FooService {  

     public static FooService getService() {  
         ServiceLoader<FooService> loader = ServiceLoader.load(FooService.class);  

         for (FooService service : loader) {  
             return provider;  
         }  

         throw new Exception ("No service");  
     }  

     public abstract int fooOperation();  

 }  

 package dependecyinjection;  
 public class FooImpl extends FooService {  
     @Override  
     public int fooOperation() {  
         return 2;  
     }  
 }  

Hoe ServiceLoader definieer die diens implementering wat teruggekeer?

In die gids projek skep 'n gids met die naam META-INF / dienste en skep 'n lêer met die naam dependencyinjection.FooService . Hierdie lêer bevat 'n lyn wat dui op die diens implementering. In so 'n geval: dependecyinjection.FooImpl

Dit is nie algemeen nog bekend nie.

Ek is groot beleaver in IO maar ek het'n paar projekte met groot xml opset lêers wat niemand verstaan nie.So pasop van programmering in xml.

In my mening is die belangrikste nadele is die leerkurwe (as jy uitwys) en die potensiaal vir die bykomende onttrekking te maak dit meer moeilik om te ontfout (wat eintlik deel van die leerkurwe sowel) maak.

Vir my is DI lyk vir my meer geskik is vir groter, komplekse stelsels wees - vir klein eenmalige programme, dit kan lei tot die jeug om oor-ontwerp is, basies, met die argitektuur neem meer ontwikkeling tyd om te voldoen om as dit ooit kan vergoed vir die waarde wat dit bied.

Net ophou bekommer oor dit. Dit is my mening dat in die tyd IoC tegnieke sal tweede natuur om die meeste ontwikkelaars wees. Ek probeer om devs hier by die werk daaroor leer en ek vind dit moeilik om die boodskap oor te want dit voel so onnatuurlik om die manier waarop ons nog altyd dinge gedoen .. wat net so gebeur het op die verkeerde manier te gewees het nie. Ook, ontwikkelaars beide nuut IOK en nuwe na 'n projek wat ek vind 'n selfs meer harde tyd. Hulle is gebruik om die gebruik van die IDE om die spoor van afhanklikhede volg om 'n begrip van hoe die hele ding "hang saam" te kry. Dat inligting word dikwels geskryf in arcane XML.

Kan jy 'n skakel of twee te voeg om te verduidelik wat Afhanklikheid inspuiting eintlik is, vir diegene van ons speel saam by die huis? Die wikipedia artikel is entertaining, maar nie baie insiggewend.

Die enigste negatiewe kant wat ek kan dink is klein prestasie afname deur konstante virtuele oproepe:)

@Blorgbeard: http://www.martinfowler.com/articles/injection.html is waarskynlik een van die beste artikels oor die onderwerp

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top