我使用的适配器来隐藏国外API:适配器连同工厂模式
DocumentTreeNodeAdapter DocumentTreeNode
| |
| |
CommonTreeAdapter ----> CommonTreeNode ----> CommonTree (foreign)
的CommonTreeAdapter有一个返回CommonTreeNode的适应()方法。 我只想分发接口。客户端代码将在DocumentTreeNode和DocumentTreeNodeAdapter接口上运行。
因为我想进一步简化适配器创造,应该有一个工厂:
DocumentTreeNodeAdapterFactoryImpl
我的问题是关于工厂:
我倾向于让通用的,它将提供的方法:
register(Class<? extends DocumentTreeNodeAdapter, Class<?> target);
检索某个适配器:
getAdapterFrom(Class<?> target);
例如
getAdapterFrom(CommonTree.class);
但是我应该在哪里注册Adapters?事实上,目前只有一个适配器,可以在工厂进行硬编码,但为了可扩展性,我真的很喜欢这种注册(...)方法。
稍后我将使用Guice将东西连接在一起。我应该在模块中初始化工厂吗?还是Guice为此提供了一个简单的方法?我还没有经历过Guice。
在此先感谢,我确定有人知道这是如何完成的,因为它被广泛使用,但我找不到一些样本。
亲切的问候
我认为你不应该过度设计你的课程。如果只有一个适配器,那么在这一点上你根本不需要工厂。不要以为你会有另一个适配器,因为在大多数情况下它不会发生。如果您现在创建这些类,则会有未使用的功能。如果您真的需要,您可以随时增加复杂性。 –
这是我对自己的想法,我认为你是对的。上面的整体思想将被解析器使用,此解析器可以将适配器分发为DocumentTreeNode,现在就完成它。我将在稍后检查课程。 – thertweck