我有一个父类和子类用于特定类型的DBDrivers。我想要一种方法来创建一个特定类型的DBDriver的多个实例,而不将类型(String)传递给实例化实例的类。类型/类型将在属性文件中提及。现在,我正在从属性文件中读取驱动程序的类型,但我无法决定一个模式,它将帮助我在更高级别的类中创建DBDriverFactory类,并能够在较低/辅助类上创建多个实例而不传递子类的驱动程序的类型(String)。
这是伪代码:
班主任{
ClassA obj = new ClassA();
obj.initialize();
}
class ClassA {
// I want to have a factory class obj instantiated in this ClassA
//which can be used create the instance in InnerClass run() method
public void initialize(){
for loop()
{
//create InnerClass thread and run
}
}
class InnerClass extends thread{
public void run(){
//create a instance of the Driverclass of driver type 'k'
//something like factoryClass.createDriver(), should return a driver,
//without knowing the type of the driver.
}
}
}
抽象类DriverClass { ....... }
SQLDriver扩展DriverClass { }
PostgresDriver扩展DriverClass { }
答案 0 :(得分:0)
您只有两个选择:
您可以将类型作为参数传递给更高级别的某个类。但你不想要那个。
或者更高级别的班级具有具体的低级班级知识。这违反了Dependency Inversion Principle
为什么不想传递参数?