Strictly speaking, the robot legs problem describes a scenario where the
types of your object chain are identical.  In your case, you wouldn't have
AFoo and BFoo, but just Foo.  It's a luxury of sorts to have AFoo and BFoo
because you _can_ use a binding annotation on the constructor of each.
 That is the solution I would prefer for its clarity in how AFoo and BFoo
are being configured:

class AFoo {
  @Inject AFoo(@DoesStuffRelatedToA IFoo ifoo) { ... }
}

class BFoo {
  @Inject BFoo(@DoesStuffRelatedToB IFoo ifoo) { ... }
}

Here, grepping through the code directly for DoesStuffRelatedToA would lead
me to the binding for IFoo in context of AFoo, and that's a little bit of a
win for code maintenance.

Fred

On Thu, Sep 6, 2012 at 12:51 PM, robertdup <[email protected]> wrote:

> Thanks for your reply.
>
> Do you know if it's a common uses to have more than 20 privates modules ?
>
>
>
> On Thursday, September 6, 2012 4:00:35 PM UTC+2, Thomas Broyer wrote:
>>
>> This is known as the "robot legs" problem, see http://code.google.com/p/*
>> *google-guice/wiki/**FrequentlyAskedQuestions#How_**
>> do_I_build_two_similar_but_**slightly_different_trees_of_**objec<http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec>
>>
>> On Thursday, September 6, 2012 9:14:24 AM UTC+2, robertdup wrote:
>>>
>>> Hello there,
>>>
>>> I trying to implement default binding on my module without any success...
>>>
>>> Here is what I would like to do (*my dream*) :
>>>
>>> class AFoo
>>>> {
>>>>     @Inject AFoo( IFoo foo ){}
>>>> }
>>>>
>>>> class BFoo
>>>> {
>>>>    @Inject BFoo( IFoo foo ){}
>>>> }
>>>>
>>>>
>>>> bind(IFoo.class).to(**DefaultFoo.class);
>>>> bind(IFoo.class).to(OtherFoo.**class)*.on(BFoo.class)*;
>>>>
>>>
>>>
>>> I know that I could solve this problem using annotation like this :
>>>
>>> class AFoo
>>>> {
>>>>     @Inject AFoo( @A IFoo foo ){}
>>>> }
>>>>
>>>> class BFoo
>>>> {
>>>>    @Inject BFoo( @B IFoo foo ){}
>>>> }
>>>>
>>>>
>>>> bind(IFoo.class).**annotatedWith(A.class).to(**DefaultFoo.class);
>>>> bind(IFoo.class).**annotatedWith(B.class).to(**OtherFoo.class);
>>>>
>>>
>>> But this way is too boring and dirty.. (because I have to add
>>> annotation/binding definition for each one)
>>>
>>>
>>>    - *Are there some others ways to solve Default binding "problem" ?*
>>>
>>> Thanks in advance; Best regards
>>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-guice/-/bqRh1CKDwsEJ.
>
> 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.
>

-- 
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