I have three classes CircleBuilder
, SquareBuilder
, and TriangleBuilder
implementing the ShapeBuilder
interface.
I need to initialize my FormBuilder
and notably a BuilderList
(extending List<ShapeBuilder>
) with one instance of each class with google-guice.
What is the best way?
I know about the provider methods and stuff like this:
@Provides
FormBuilder provideFormBuilder() {
DatabaseTransactionLog instance = new FormBuilder ( <numerous parameters> );
ShapeBuilder builder = null ;
builder = new CircleBuilder( <numerous parameters> ) ;
instance.addBuilder( builder ) ;
builder = new SquareBuilder( <numerous parameters> ) ;
instance.addBuilder( builder ) ;
// And so on
return instance;
}
but it would mean that I have to create my FormBuilder
manually which defeats the purpose of using guice (because FormBuilder
is the top element in my object graph).
I'd love to be able to write something like this:
bind(BuilderList.class).to(CircleBuilder.class);
bind(BuilderList.class).to(TriangleBuilder.class);
bind(BuilderList.class).to(SquareBuilder.class);
Any idea?