我看到过它被使用,但我不确定这些用例是否是好的使用示例。你有Guice Mapbinder的惯用用法示例吗?(即Mapbinder真正是解决问题的正确工具的情况)
我看到过它被使用,但我不确定这些用例是否是好的使用示例。你有Guice Mapbinder的惯用用法示例吗?(即Mapbinder真正是解决问题的正确工具的情况)
初看,它似乎是创建一个公共接口的运行时命名实现注册表的合理方式。考虑从命令行或配置文件中选择许多插件/模式/其他内容之一:所需注入在编译时无法知道。MapBinder提供了一种简单的运行时查找方法,而不需要使用类型切换。
我在Guts-GUI中广泛使用它。
你可以特别关注ResourceModule
,其中它被用于映射给定类型T
的正确ResourceConverter<T>
:
Map<TypeLiteral<?>>, ResourceConverter<?>>
MapBinder
直接在 Resources
辅助类中创建。
这样,任何模块都可以为自己的类型添加自己的资源转换器,例如 MessageModule
添加了自己的转换器。
我还在 WindowsModule
中将其用作 Map<Integer, WindowProcessor>>
,以定义一个有序的 WindowProcessor
列表,按顺序应用于新创建的窗口。
再次说明,这允许各种模块将自己的处理器插入到应用于每个窗口的列表中:ResourceModule
使用它来添加自动注入 i18n 资源到窗口的功能。