我正在使用适配器来隐藏外部 API:
DocumentTreeNodeAdapter DocumentTreeNode
| |
| |
CommonTreeAdapter ----> CommonTreeNode ----> CommonTree (foreign)
CommonTreeAdapter 有一个返回 CommonTreeNode 的 adapt() 方法。我只想分发接口。客户端代码将对 DocumentTreeNode 和 DocumentTreeNodeAdapter 接口进行操作。
因为我想进一步简化Adapter的创建,所以应该有一个Factory:
DocumentTreeNodeAdapterFactoryImpl
我的问题是关于那个工厂:
我倾向于使它通用,它会提供方法:
register(Class<? extends DocumentTreeNodeAdapter, Class<?> target);
检索某个适配器:
getAdapterFrom(Class<?> target);
例如
getAdapterFrom(CommonTree.class);
但是我应该把适配器的注册放在哪里?事实上,目前只有一个适配器,可以在工厂进行硬编码,但为了可扩展性,我真的很喜欢 register(...) 方法。
稍后我将使用 Guice 将东西连接在一起。我应该在模块中初始化工厂还是 Guice 提供了一种简单的方法来做到这一点?我还没有使用 Guice 的经验。
在此先感谢,我相信有人知道这是如何完成的,因为它被广泛使用,但我找不到一些样本。
亲切的问候