我有n个具有相同功能但包装名称不同的罐子(因为不同的区域)。 我使用这个n罐进行相同的操作。
现在我想为我的操作加载相应的jar区域。在这种情况下使用的最佳设计模式是什么。
我通过更改包名称和动态加载来尝试反射。但是,这种情况有没有最好的模式?
答案 0 :(得分:0)
由于您的不同实施方案具有不同的包装名称,因此它们位于不同的罐子中并不重要。只需使用工厂模式。
答案 1 :(得分:0)
你会分开发行吗?如果不是,您不需要动态加载罐子或反映它们。
您的应用可以引用所有广告罐。以下是您可能拥有的依赖项:
|Application Jar |
↓ ↓ ↓
↓ |Region 1 Jar| |Region 2 Jar|
↓ ↓ ↓
|Core Jar |
Core Jar
与区域无关,但有一个或多个接口可满足区域的要求。 Region jars
具有实现这些核心接口的类,Application jar
负责构造正确的区域类并将它们全部插入。
如果Regions不在您的控制之下,并且他们不能依赖Core或实现它的接口,您可以使用适配器:
|Application Jar |
↓ ↓ ↓
↓ |Region 1 Jar Adapter| |Region 2 Jar Adapter|
↓ ↓ ↓ ↓
|Core Jar | ↓ ↓
|Region 1 Jar| |Region 2 Jar|
此处Region 1
和Region 2
是您喜欢的,它们没有依赖关系。只有一个包依赖于它们,这就是它的适配器包。适配器支持核心接口,并知道如何将调用转换为基础Region Jar。该申请与以前的情况相同。