Java - 创建抽象对象的工厂类?



我有以下 2 个抽象类:

public abstract class AbstractCarChecker implements CarService {
}

以及下面扩展的摘要CarChecker

public abstract class CarChecker<T extends Car> extends AbstractCarChecker {
}

我想要一个工厂类来实例化 CarChecker 对象,以便所有子类(例如FordCheckerFactory( 可以扩展它以创建实例。

public class CarCheckerFactory {
public CarCheckerFactory() { }
public static CarChecker newFrom(String carName, String carReg) {
CarChecker carChecker = new CarChecker(carName, carReg);
return carChecker;
}
}

但是,问题是我无法将CarChecker实例化为抽象。

最好的方法是什么,使用if statement来决定返回哪些具体实现?例如,将"ford"传递到newFrom方法中,以了解创建FordChecker对象?

您可以按如下方式执行此操作:

public static CarChecker newFrom(String carName, String carReg, String className) {
Class<?> theClass = Class.forName(className);
Constructor<?> cons = theClass.getConstructor(String.class,String.class);
CarChecker carChecker = cons.newInstance(new Object[] {carName, carReg });
return carChecker;
}

其中className与具体类的名称有关。

你不能创建抽象类的实例(因此,"抽象对象"根本不是一个东西(。

工厂的整个概念是它们代表了创造事物的概念。因此,newFrom方法不应该是静态的(因为那样它也可能是一个构造函数,而工厂作为一个概念是无用的;工厂的功能是具有可以具有多态行为的构造函数,就像实例方法一样(。因此:

public interface CarCheckerFactory<T extends Car> {
CarChecker<T> newFrom(String carName, String carReg);
}
public class FordCheckerFactory implements CarCheckerFactory<Ford> {
return new FordChecker(carName, carReg);
}

相关内容

  • 没有找到相关文章

最新更新