使用适配器与代理与多个提供程序集成

时间:2015-09-18 12:52:08

标签: java design-patterns

我要与多个提供商集成,每个提供商都有不同的界面,所以我有2个选项,想要选择其中一个:

1-使用适配器,因此在我的应用程序内部将包含所有带有我期望参数的方法,并且当获取提供者API将通过从我的应用程序实现接口来为此API创建适配器时。

2-使用通用代理代理实现特定接口“可以是适配器选项中指定的接口”,此代理必须调用提供者API并提供我的应用程序使用它的方法

注1:您可能认为2个选项是相同的但不是,在适配器中您期望提供者api将具有相同的方法,您具有不同的名称和相同的参数,但可能需要强制转换,在代理中,您可以从提供者一方获得更多灵活性,因此提供者可以是java api,REST服务或其他任何东西。

注2:我和选项1中的提供者api之间的合同是商业共识,但在选项2中,必须实现代码接口

注意3:我可以在一个解决方案中使用代理,在我的应用程序中使用代理,并使用适配器调用提供程序API,如果提供程序API与我们的业务不匹配,那么通用理解将会在其上创建另一个代理:

Provider => proxy => adaptor => proxy

但我是否需要它而不是仅使用代理来包装所有这些?

1 个答案:

答案 0 :(得分:2)

我认为代理模式并非旨在使预期的接口适应另一个。也就是说,代理模式旨在解决与以下问题相关的问题:

  • 访问远程接口
  • 访问昂贵/复杂的界面

两种情况下,代理方便的界面访问。

另一方面,您有适配器模式,旨在使实际接口适应预期的接口。它并不介意您需要的转换是简单还是复杂(,正如您在注1中所述)。

所以,如果我没有误解你的问题,我认为适配器模式会更好。