我很想知道以下场景是否是依赖注入(inject)的一个很好的用例。这个例子有点编造,可能不是好的 OO 设计。请耐心等待并关注与问题相关的部分:
假设我有以下类(class):
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?
根据我到目前为止在教程中看到的示例,它似乎最有用
当构造函数参数可以被确定为配置而不是在以下情况下
这些值最终基于用户输入?
谢谢!
最佳答案
根据您发布的内容,这不是正确使用依赖注入(inject)。对于工厂模式来说,这是一个不错的案例。依赖注入(inject)用于通过使用接口(interface)来消除对特定类型的依赖,并且仅在运行时设置具体类型(通常使用 ninject 之类的第 3 方框架)
例如,您可以有一个 IUserFactory,BankAccount 类型使用它来获取 IUser。在运行时,可以使用具体的 UserFactory 类“注入(inject)” BankAccount 类,而不是具有编译时依赖项。然后,您可以换出 UserFactories 而不必需要 BankAccount 类。
关于spring - 依赖注入(inject) - 在运行时决定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270929/