gpt4 book ai didi

java - 将具体工厂传递给抽象工厂类 - java

转载 作者:行者123 更新时间:2023-11-29 03:45:39 24 4
gpt4 key购买 nike

我正在创建一个抽象工厂类,我希望能够将具体工厂作为参数发送。这样我就可以删除抽象类中的 if/else 链。

我的问题是我不确定如何将其类型转换回抽象类中的具体类以便调用 createVehicle() 方法。

car = UniversalVehicleFactory.getFactory().createVehicle(CarFactory);
plane = UniversalVehicleFactory.getFactory().createVehicle(PlaneFactory);

在 UniversalVehicleFactory 内部,我有方法 createVehicle,这是我遇到问题的方法。我想要实现的是:获取参数,确定其类并将其转换为该类,然后调用其内部 createVehicle 类。

public Vehicle createVehicle(AbstractFactory factory) {

// I want to take factory,
// cast it to the concrete factory, and
// call createMethod() on the factory

return factory.getInstance().createVehicle();
}

非常感谢帮助解决这个问题!

最佳答案

我会回答你的问题,但我很好奇你为什么要通用工厂调用抽象工厂的方法,如果你确实必须提供那个工厂的实例作为参数;你最好直接调用抽象工厂的创建方法。

为此目的发明了泛型。

interface Factory< T > {
T make();
}

public class CarFactory implements Factory< Car > {
Car make() { ... }
}

public class PlaneFactory implements Factory< Plane > {
Plane make() { ... }
}

public class UniversalVehicleFactory {
public < T extends Vehicle > T make( Factory< T > factory ) {
return factory.make();
}
}

您会注意到 UniversalVehicleFactory 没有实现 Factory< T >。

关于java - 将具体工厂传递给抽象工厂类 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11069645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com