java - 实现一个基于值返回对象的工厂
问题描述
我打算这样做-
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。
如果这是您获取某个字符串并基于客户端提供的该字符串(或任何其他键)时的经典用例,您需要做出决定。那是你自己的业务逻辑,Guice 不是这里的工具。
如果您不喜欢工厂模式的经典 if-else 方式,请谷歌寻找替代方案。
如果您在代码中预先知道您需要哪种类型的汽车,则键入 Guice Provider,您可以为Provider<ABCCar>
和 for定义两个提供程序Provider<ABCCar>
。
当您需要在同一类型中混合注入和非注入构造函数参数时,请使用 FactoryModuleBuilder。请参阅Guice FactoryModuleBuilder 一个带有构造函数参数的实例
推荐阅读
- python - Python 解析奇怪的根 - 带有 ElementTree 或 lxml 的 TTML (XML)
- rest - api平台:_invoke方法中$data的字段为null
- c# - 将用户电子邮件地址保存到 ini 文件
- reactjs - 无法查看子组件中的数据
- javascript - 如何在没有下一步按钮的情况下制作多表单?
- docker - 构建映像时 npm install 失败
- postgresql - Postgres的行构造函数中哪些字符被双引号括起来
- php - php7 在 windows utf-8 字符问题中弹出
- javascript - 从 JSON 数据中循环遍历第一个数组中的多个对象,使用 FUNCTION COMPONENT 在 React 中显示两个带有对象的数组
- python - 如何根据变量在列中出现的次数对变量进行分组?