Ik hoor steeds vaker de term Depency Injection om bepaalde problemen mee op te lossen. Nu heb ik al wat over het onderwerp gelezen, maar ik snap het eerlijk gezegt niet helemaal. Daarom dit topic omdat ik graag wat Nederlandse uitleg over dit ontwerp zoek. Wat ik tot nu heb begrepen is dat het te vergelijken is met de Service Locator J2EE pattern.
Nu heb je verschillende vormen van depency injection waaronder interface injection, en Constructor Injection. Volgens mij gebruik ik nu vaak de interface injection vorm mijn code, waarbij ik een interface maak met de functie injectNodesFinder, vervolgens moet de klasse deze methode implmenteren door de correct Finder-klasse op te geven (i.e. this.finder = new NodesFinder()).
Het enigste hierbij is dat alle deze klasses worden geimplementeerd in een [singleton] klasse.
Nu moet ik zeggen dat dit nou niet echt de meeste flexibele oplossing is als je van finder wilt switchen.... Omdat er nu eigenlijk nog steeds een "vaste" afhankelijkheid van mijn klasse met de NodesFinder-klasse. De perfect is het niet. Nu zou je dus een service locator kunnen gebruiken okm de juist nodesFinder instantie/klasse op te vragen...
Als ik het nu begrijp moet je kiezen tussen de afhankelijkheid van een service locator, of de correcte finder mee sturen via Constructor Injection, of interface injection. Nu heb je ook nog iets zoals Inversion of Control maar eerlijk gezegd snap ik daar allemaal niks van.
Nu is mijn vraag waarom zou ik Depency Injection ipv een Service locator genbruiken? Ik heb namelijk gevoel dat de depency injection het allemaal niet echt overzichtelijker maakt. Het vast iets wat verdomd handig is in de J2EE/EAA is.
Nu heb je verschillende vormen van depency injection waaronder interface injection, en Constructor Injection. Volgens mij gebruik ik nu vaak de interface injection vorm mijn code, waarbij ik een interface maak met de functie injectNodesFinder, vervolgens moet de klasse deze methode implmenteren door de correct Finder-klasse op te geven (i.e. this.finder = new NodesFinder()).
Het enigste hierbij is dat alle deze klasses worden geimplementeerd in een [singleton] klasse.
Nu moet ik zeggen dat dit nou niet echt de meeste flexibele oplossing is als je van finder wilt switchen.... Omdat er nu eigenlijk nog steeds een "vaste" afhankelijkheid van mijn klasse met de NodesFinder-klasse. De perfect is het niet. Nu zou je dus een service locator kunnen gebruiken okm de juist nodesFinder instantie/klasse op te vragen...
Als ik het nu begrijp moet je kiezen tussen de afhankelijkheid van een service locator, of de correcte finder mee sturen via Constructor Injection, of interface injection. Nu heb je ook nog iets zoals Inversion of Control maar eerlijk gezegd snap ik daar allemaal niks van.
Nu is mijn vraag waarom zou ik Depency Injection ipv een Service locator genbruiken? Ik heb namelijk gevoel dat de depency injection het allemaal niet echt overzichtelijker maakt. Het vast iets wat verdomd handig is in de J2EE/EAA is.
[ Voor 4% gewijzigd door alienfruit op 11-04-2006 15:49 ]