2011-09-03 66 views
4

我見過它用過,但我不確定這個用法是不錯的用例。你有沒有慣例的例子Guice Mapbinder的用法? (Mapbinder確實是解決問題的正確工具的情況)什麼是Guice Mapbinder的好用例?

+0

你能澄清你的意思是「好用法」嗎? – blubb

+0

@Simon - 很難定義一個優雅,優雅的設計。我正在尋找不是「代碼味道」的用例。 – ripper234

回答

3

不合時宜,它看起來像創建公共接口的運行時命名實現註冊表的合理方式。考慮從命令行或配置文件中選擇許多插件/模式/其中之一:在編譯時無法獲知所需的注入。 MapBinder提供了一種簡單的運行時查找,而不需要進行類型切換。

1

我在Guts-GUI中廣泛使用它。 你可以看看,特別是在ResourceModule,它被用來映射權ResourceConverter<T>給定類型T

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

MapBinderResources輔助類直接創建。

這樣,任何模塊都可以爲其自己的類型添加自己的資源轉換器,例如, MessageModule增加了自己的轉換器。

我也用它作爲WindowsModuleMap<Integer, WindowProcessor>>以再次確定要應用的WindowProcessor秒的有序列表,一個接着一個,到新創建的窗口..

,這使得各種模塊來插入自己的處理器應用到每個窗口:ResourceModule使用它來增加自動將i18n資源注入到窗口的能力。