首页 > 解决方案 > 实现一个基于值返回对象的工厂

问题描述

我打算这样做-

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 是否适合它?

标签: javaguice

解决方案


我们在这里遗漏了一些额外的信息,这里的关键点是你打算如何使用 CarFactory。

如果这是您获取某个字符串并基于客户端提供的该字符串(或任何其他键)时的经典用例,您需要做出决定。那是你自己的业务逻辑,Guice 不是这里的工具。
如果您不喜欢工厂模式的经典 if-else 方式,请谷歌寻找替代方案。

如果您在代码中预先知道您需要哪种类型的汽车,则键入 Guice Provider,您可以为Provider<ABCCar>和 for定义两个提供程序Provider<ABCCar>

当您需要在同一类型中混合注入和非注入构造函数参数时,请使用 FactoryModuleBuilder。请参阅Guice FactoryModuleBuilder 一个带有构造函数参数的实例


推荐阅读