2012-07-19 42 views
1

我有代码看起来像FF:依赖注入使用情况

Interface i; 
if (someCondition) { 
    ImplementationA a = new ImplementationA(); 
    a.setFieldA(someValueA); 
    a.setFieldB(someValueB); 
    i = a; 
} else { 
    ImplementationB b = new ImplementationB(); 
    b.setFieldC(someValueC); 
    i = b; 
} 
// Do something with i. 

我的问题是:

  1. 我应该在这里使用依赖注入,或者这是超出范围技术?
  2. 如果我应该在这里使用依赖注入,我该如何使用Google Guice来实现它?

回答

1

动态运行时注入超出范围。你将不得不通过模块来配置使用哪个实现。你仍然可以使用一个工厂(看看多重绑定和辅助注入),并节省自己的工作来设置你的实例,尽管...