我打算这样做-
public Car CarFactory {
Car createCar(String carType) {
if(carType.equals("abc"))
return new ABCCar();
if(carType.equals("def"))
return new DEFCar();
//so on...
}
}
如何使用 guice 4.0 实现它? FactoryModuleBuilder 是合适的人选吗?
最佳答案
我们在这里缺少一些附加信息,这里的关键点是您计划如何使用 CarFactory。
如果这是经典用例,当您获取某个字符串并根据客户端提供的该字符串(或任何其他 key )时,您需要做出决定。这是你自己的业务逻辑,Guice 不是这里的工具。
如果你不喜欢工厂模式的经典 if-else 方式,请谷歌寻找替代方案。
如果您在代码中提前知道需要哪种类型的汽车,则输入 Guice Provider,您可以为 Provider<ABCCar>
定义两个提供商和 Provider<ABCCar>
.
当您需要在同一类型中混合注入(inject)和非注入(inject)构造函数参数时,请使用 FactoryModuleBuilder。请参阅Guice FactoryModuleBuilder an instance with constructor parameters
关于java - 实现一个根据值返回对象的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57933842/