Hi,
I'm finally writing my first Guice module and I'm not sure how to
proceed on using "new" inside a module. For instance, if I have 2
interfaces A and B that I want to make available from my module to non-
Guice modules:
public interface A
{
B<String> getUp();
B<String> getDown();
}
Is it a best-practice to implement as:
class Aimpl
{
private final B<String> bUp = new BUp();
private final B<String> bDown = new BDown();
public B<String> getUp() { return bUp; }
public B<String> getDown() { return bDown; }
}
Where I am using "new" to create objects, but only within my own
module, or is it best to rely on Guice to give me these objects:
class Aimpl
{
private final B<String> bUp;
private final B<String> bDown;
@Inject
Aimp( @Named( "Up" ) final B<String> bUp, @Named( "Down" ) final
B<String>bDown )
{ this.bUp = bUp; this.bDown = bDown; }
public B<String> getUp() { return bUp; }
public B<String> getDown() { return bDown; }
}
In reality my classes are larger with more "get" methods on A. For
instance, I have an "A" interface that gives access to a number of
Comparator<MyObject> strategies. Think of my "A" as similar to the
Predicates class in Guava but I want to expose "A" as an interface
instead of a static class so I can mock it, and each of the generic
types is specialized for my classes. However, my Aimpl constructor is
now accepting too many parameters.
I suppose if this was a new project I would simply inject a strategy
directly into each class that requires the strategy and not have the
"A" interface or class. In my case I need to expose these strategies
to both other Guice modules and legacy non-Guice-ified code and
therefore I have created the "A" interface.
I guess the bottom line is that I need advice on using "new" within a
module to directly instantiate other package-visible classes in the
package.
Thanks for your time.
Jeff
--
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.