我在Guice中有一个类在构造函数中使用依赖注入获取〜10个参数。依赖注入与许多小类
该类有许多派生类。 所有派生类的构造函数只是将所有参数传递给super。
将新参数添加到基类的构造函数中需要将此参数添加到所有派生类的所有构造函数中。
class MyBaseClass {
@Inject
MyBaseClass(arg1,arg2,arg3, ..., argn) {
this.arg1 = arg1
....
}
}
class MyDerivedClass1 extends MyBaseClass{
@Inject
MyDerivedClass1(arg1,arg2,arg3, ..., argn) {
super(arg1,arg2,arg3, ..., argn)
}
}
class MyDerivedClass2 extends MyBaseClass{
@Inject
MyDerivedClass2(arg1,arg2,arg3, ..., argn) {
super(arg1,arg2,arg3, ..., argn)
}
}
一种解决方案我不得不是包装的所有参数在一个类和注入该类基类和所有派生类。通过这种方式向该注入类添加新参数时,它将注入到所有派生类中。
喜欢的东西:
class MyBaseClassSettings {
@Inject
MyBaseClassSettings(arg1,arg2,arg3, ..., argn) {
this.arg1 = arg1
...
}
}
class MyBaseClass {
@Inject
MyBaseClass(MyBaseClassSettings settings) {
this.settings = settings;
}
}
class MyDerivedClass1 extends MyBaseClass{
@Inject
MyDerivedClass1(MyBaseClassSettings settings) {
super(settings)
}
}
class MyDerivedClass2 extends MyBaseClass{
@Inject
MyDerivedClass2(MyBaseClassSettings settings) {
super(settings)
}
}
假设ARG游戏没有真正的相互关系(一个是数据库的连接,另一种是多数民众赞成分配线程任务的帮手,另一人做的部分实际的逻辑,另一个持有该类的地理配置......(只是例子))这个解决方案是否被认为是好的?
如果是这样,包装类的命名会是什么?
尽管这种方法没问题,但您应该检查所有参数参数是否没有共同之处......也许您会发现,您可以从“设置”中获取“数据库设置”,“用户设置” ,...并使用多个有意义的包装器。 –