我正在寻找一种设计模式来解决我遇到的架构问题。
我使用一些有点相同但不完全一样的网络服务。对于每个新版本的 Web 服务,可能会有更多可用的方法,但在大多数情况下,它们基本相同。
我想编写一个抽象层,无论我与哪个版本的 web 服务通信,它都可以工作。显然,如果我使用的方法只存在于较新版本的 web 服务中,我会得到某种错误,但没关系。我可以处理这些。
我想要这个抽象层的原因是为了避免我的应用程序和它正在与之通信的 web 服务版本之间的紧密耦合。
当涉及到我的抽象层的设计模式时,我有哪些选择?我看到有一种模式称为适配器,另一种称为桥接。在这种情况下,他们中的任何一个人会这样做吗?任何帮助表示赞赏!
编辑 - 为了清楚起见,这里是一张图纸。
有时我希望我的应用程序与 web 服务版本 1 通信,而其他时候我希望它使用 web 服务版本 2。这取决于谁在使用客户端应用程序。
客户端应用程序不应该知道或关心它正在与哪个版本通信。唯一的例外是,如果它使用仅在某些版本中可用的方法,我需要优雅地处理它(告诉用户他们已经安装了旧版本的 web 服务)。