我很想知道以下场景是否是依赖注入的一个很好的用例。这个例子有点弥补,可能不是很好的OO设计。请关注我,并专注于与问题相关的部分:
假设我有以下课程:
class BankAccount
{
User user;
Integer accountNo;
BankAccount(User user, Integer accountNo){
....
}
}
class User
{
String firstName, lastName;
User(String firstName, String lastName)
{
....
}
}
假设我必须在以下场景中创建对象:
void withoutDependecyInjectionUsingNewOperator()
{
User user = new User("Lance", "Armstrong");
// These values are determined
// based on form input on UI
BankAccount account = new BankAccount(user, 1233);
}
我已经了解了支持DI的Guice或Spring等框架。 如果我使用这些框架中的任何一个,我是否应该更改上述功能 使用DI?
基于我到目前为止在教程中看到的示例,它似乎最有用 当构造函数参数可以被确定为配置而不是用于其中的情况 这些值最终是基于用户输入吗?
谢谢!
答案 0 :(得分:1)
根据您发布的内容,这不是正确使用依赖注入。对于工厂模式来说,这是一个不错的案例。依赖注入用于通过使用接口消除对特定类型的依赖性,并且仅在运行时设置具体类型(通常使用第三方框架,如ninject)
例如,您可以使用BankAccount类型用于获取IUsers的IUserFactory。在运行时,BankAccount类可以“注入”具体的UserFactory类,而不是具有编译时依赖性。然后,您可以在不需要BankAccount类的情况下换出UserFactories。