我将与多个提供商集成,每个提供商都有不同的接口,因此我有两个选项,并希望从中选择一个:
1-使用适配器,这样我的应用程序内部就会有包含我期望的所有方法和参数的接口,当get provider API将通过从我的应用程序实现接口来为这个API生成适配器时。
2-使用通用代理实现特定接口“可能是适配器选项中指定的接口”,此代理必须调用提供程序API并为我的应用程序提供使用它的方法
注1:你可能认为两个选项是相同的,但事实并非如此,在adaptor中,你期望提供者api将有相同的方法,在不同的名称和相同的参数中,但可能需要强制转换,在proxy中,你从提供者的角度有更多的灵活性,所以提供者可以是java api,REST服务或其他任何东西。
注2:选项1中我和提供者api之间的合同是业务常识,而选项2中是必须实现的代码接口
注3:我可以在一个解决方案中同时使用代理和应用程序中的代理,并使用适配器调用提供者API,如果提供者API与我们的业务共识不匹配,将在其上创建另一个代理,例如:
Provider => proxy => adaptor => proxy但是,我需要这样做而不是只使用代理来包装所有这些吗?
发布于 2015-09-18 21:21:13
我认为proxy模式并不打算将一个预期的接口适配到另一个接口。也就是说,Proxy模式旨在解决与以下内容相关的问题:
访问远程interface
这两种情况下,代理接口访问都很容易。
另一方面,您拥有适配器模式,该模式旨在将实际接口适配到预期接口。它并不介意你需要的转换是简单的还是复杂的(正如你在注释1中所说的那样)。
所以,如果我没有误解你的问题,我认为你最好使用适配器模式。
https://stackoverflow.com/questions/32652527
复制相似问题