java - 实现一个根据值返回对象的工厂

标签 java guice

我打算这样做-

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/

相关文章:

java - 在 Java 中计算可用内存的最佳方法是什么?

java - 管理 quartz 作业、删除

netbeans - 将 Netbeans RCP 与 Google Guice 结合使用

java - 发生 Tomcat 关闭时如何进行最终的数据库推送?

java - 现场注入(inject) Gin

java - Apache Tomcat-9.0.16 将属性 'maxConcurrentStreamExecution' 设置为 '100' 没有找到匹配的属性

java - 如何解决 hibernate 搜索 (lucene) 标准限制和 getResultSize 问题?

java - 何时何地使用 Guice 依赖注入(inject)?

java - 如何确定 JMock 模拟对象正在模拟哪个类?

java - Rx java 内存不足