2008/9/13 Pyrolistical <[EMAIL PROTECTED]> > > Yes, I understand long chains will be hard with DI by hand, but I > don't understand how Guice makes it easier in long chains. > > Say you have a long chain that goes from A -> B -> ... -> F -> G > > But H is created not when G is created, but much later in the > runtime. So do you have to pass the Injector all the way to G for it > to create H later? >
not really - you could just inject some sort of factory into G that lets you create H later on (or even inject the injector if you want) so no need to pass the injector down the chain because the DI system will manage that for you - and if you decide to change how H is created you just need to change the injection point in G, no need to update the chain... > On Sep 11, 5:46 pm, famousactress <[EMAIL PROTECTED]> wrote: > > It would also seem that the deeper your callstack, the bigger the > > payoff... A->B->C might not seem like such a big deal to hand-wire... > > > > Where I see the payoff is in the bootstrapping and ability for classes > > deeper in the stack to @Inject dependencies that shouldn't be cared > > about above them... Imagine A-F instead of A-C. What happens when F > > needs a some sort of JMSClient depenency? > > > > DI by hand means either E has to make a static call to a ClientFactory > > (making E less testable for F's sake).. or, you bubble up the > > JMSClient interface and pass it all the way down from A.. > > > > I'd concede that DI by hand gives you much of the testability.. I > > think what Guice seems to add is the ability to decouple groups of > > classes by limiting the knowledge of dependent interfaces to the > > classes that care about them. > > > > Then again, I'm just starting to implement it.. so what do I know :) > > > > Phill > > > > On Sep 11, 5:28 pm, Pyrolistical <[EMAIL PROTECTED]> wrote: > > > > > I have watched that, and I don't see why DI by hand is any worst than > > > Guice. Its solves all your main problems with testability. > > > > > The ClientFactory in your DI by hand example is very similar to a > > > Provider in a Module for the Injector. > > > > > So how is Guice any better than DI by hand? > > > > > On Sep 11, 5:17 pm, "Bob Lee" <[EMAIL PROTECTED]> wrote: > > > > > > On Thu, Sep 11, 2008 at 5:10 PM, Pyrolistical <[EMAIL PROTECTED]> > wrote: > > > > > > > This is my point. If using new breaks Guice, then what's the point > of > > > > > Guice. > > > > > > > If I need to pass an Injector around to create classes, why don't I > > > > > just pass in the dependencies when I use the new constructor? I > can > > > > > just replace the Injector with a class that holds references to my > > > > > dependencies. I would create this class at main just like > configuring > > > > > a module. > > > > > > > If I did that, what's the point of Guice? > > > > > >http://crazybob.org/2007/06/introduction-to-guice-video-redux.html > > > > > > Bob > > > -- Cheers, Stuart --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-guice?hl=en -~----------~----~----~----~------~----~------~--~---
