Guice Mapbinder的一个好用例是什么?

4

我看到过它被使用,但我不确定这些用例是否是好的使用示例。你有Guice Mapbinder的惯用用法示例吗?(即Mapbinder真正是解决问题的正确工具的情况)


你能澄清一下你所说的“好用”是什么意思吗? - blubb
@Simon - 很难定义一个好的、优雅的设计。我正在寻找那些不是“代码异味”的用例。 - ripper234
2个回答

3

初看,它似乎是创建一个公共接口的运行时命名实现注册表的合理方式。考虑从命令行或配置文件中选择许多插件/模式/其他内容之一:所需注入在编译时无法知道。MapBinder提供了一种简单的运行时查找方法,而不需要使用类型切换。


1

我在Guts-GUI中广泛使用它。 你可以特别关注ResourceModule,其中它被用于映射给定类型T的正确ResourceConverter<T>

Map<TypeLiteral<?>>, ResourceConverter<?>>

MapBinder 直接在 Resources 辅助类中创建。

这样,任何模块都可以为自己的类型添加自己的资源转换器,例如 MessageModule 添加了自己的转换器。

我还在 WindowsModule 中将其用作 Map<Integer, WindowProcessor>>,以定义一个有序的 WindowProcessor 列表,按顺序应用于新创建的窗口。

再次说明,这允许各种模块将自己的处理器插入到应用于每个窗口的列表中:ResourceModule 使用它来添加自动注入 i18n 资源到窗口的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接