我正在构建一个应用程序,它应该采用一个参数来指定要使用的给定数据结构的实现。比如说,参数的超类型是Super,我提供了很多SubX的实现。我的应用程序的用户可能还提供了在编译时未知的 SubY。
在应用程序中,参数将被传递,并将用于创建 Sub_ 的实例,调用 Super 中定义的方法,并用作参数化类型中的参数。
如果它只是用于参数化类型,我也可以让我的类参数化,这样就可以了。但是,我需要创建此类对象的实例,所以我想知道配置我的应用程序的最佳方式是什么。
我应该将类型和工厂作为参数传递吗?我发现工厂模式很难看,并想避免这种方法。此外,传递的参数太多(我的应用程序实际上需要几个这样的参数)。
我应该创建一个对象并将此配置粘贴在那里吗?是否可以在运行时解析对象对象,从而在编译时不知道配置?
编辑:理想情况下,我想要类似下面的代码。您能否提供一个基于此的最小工作示例?
class Test[Type <: Super] {
def main {
val testVal: Type = new Type()
testVal.methodDefinedInSuper()
}
}