我正在寻找一种设计模式来解决我所拥有的架构问题。
我使用了一些not服务,这些服务有点相同,但并不完全相同。对于每个新版本的few服务,可能会有更多的方法可用,但在大多数情况下,它们基本上是相同的。
我想要编写一个抽象层,它可以工作,而不管我与哪个版本的with服务进行通信。显然,如果我使用的方法只存在于较新版本的webservices中,我将得到某种错误,但这是可以的。我能处理好的。
我之所以想要这个抽象层,是为了避免我的应用程序和它正在进行通信的with服务版本之间的紧密耦合。
当涉及到抽象层的设计模式时,我的选择是什么?我看到有一种模式叫做Adapter,另一种叫做Bridge。在这种情况下,有谁会这样做呢?任何帮助都是非常感谢的!
编辑--为了清晰起见,这里是一幅画。

有时我希望我的应用程序与webservices 1对话,而另一些时候我希望它使用webservices 2,这取决于谁在使用客户端应用程序。
客户端应用程序不应该完全知道或关心与其对话的版本。唯一的例外是,如果它使用的方法仅在某些版本中可用,我需要优雅地处理(告诉用户他们已经安装了一个旧版本的webservices)。
发布于 2013-05-04 16:39:45
那将是一家工厂。您甚至可以使用内置的ChannelFactory或自己的。无论如何,facttory允许您在不更改客户端合同的情况下更改实现。
发布于 2013-05-04 19:41:32
我建议使用正面图案。您可以通过下面的链接来了解更多关于它的信息。http://javapapers.com/design-patterns/facade-design-pattern/
Facade是为客户提供抽象和无缝层的交互。它隐藏了所有的内部复杂性,因为在您的情况下,客户端需要找到它可以交互的web服务的正确版本。假设您有不同版本的xml服务,并且输入json/xml结构在不同版本中发生了变化。Facade将接受客户端调用,它将根据不同版本的web服务验证输入,然后调用正确的web服务版本。如果您没有外观层,那么客户端将很难找到正确的webservice版本,并且在到达正确的web服务之前必须发送多个调用。
https://stackoverflow.com/questions/16376315
复制相似问题