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