【发布时间】:2013-01-07 20:41:48
【问题描述】:
我有三个类CircleBuilder、SquareBuilder和TriangleBuilder实现ShapeBuilder接口。
我需要使用 google-guice 初始化我的 FormBuilder,尤其是 BuilderList(扩展 List<ShapeBuilder>),每个类的一个实例。
最好的方法是什么?
我知道提供者方法和类似的东西:
@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;
}
但这意味着我必须手动创建我的FormBuilder,这违背了使用 guice 的目的(因为FormBuilder 是我的对象图中的顶部元素)。
我希望能够写出这样的东西:
bind(BuilderList.class).to(CircleBuilder.class);
bind(BuilderList.class).to(TriangleBuilder.class);
bind(BuilderList.class).to(SquareBuilder.class);
有什么想法吗?
【问题讨论】:
标签: java dependency-injection guice