Yes, thanks Eric I got it now.

Class down the chain that depend on some class that the parents don't
use are injected automagically by Guice.  In contrast, DI by hand
would require all the parents to know of the children's dependencies.

Thanks for bearing with me everybody, but I finally get Guice.

On Sep 11, 7:58 pm, "Eric Anderson" <[EMAIL PROTECTED]> wrote:
> On Thu, Sep 11, 2008 at 7:44 PM, Sam Berlin <[EMAIL PROTECTED]> wrote:
> > ... if you do this through non-hand-coded DI then the
> > objects are constructed for you with only the dependencies they
> > directly need to have.
>
> In fact, this is the reason our team uses Guice heavily.  A class need
> only be provided with its immediate dependencies.  A class that gets
> injected with something, only so that it can be passed off for another
> class to use, is noisy at best, and completely confusing at worst.
> When you pass in extra dependencies, you create noise in both the
> production code and the test code.
>
> Another point of interest is, using an IoC container like Guice,
> allows you to pull in dependencies easily.  For instance, my team
> writes long-running applications for dealing with data feeds.  One
> business requirement is that we periodically report what point the
> process is at so that monitors make decisions about whether the
> overall system is healthy.  As we determine what parts of the process
> need to do update (because they are slow) and what parts should not
> update (because they are fast and would simply create noise), those
> slow classes need to be fed the StatusReporter instance.  And, unit
> tests are written to express the business rules and ensure that a
> particular class is properly reporting status.  Since the
> StatusReporter interface is bound up in the Guice modules already, it
> is dead simple to add status reporting to any existing class.  All it
> takes is, changing the constructor of a single class, and tweaking the
> unit tests for that class.  No other classes care that I've changed
> that constructor.  Zero other production classes change.
>
> IoC containers allow a much more decoupled system so that change is
> very isolated.
>
> Eric
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to