我正在寻找一种设计模式来解决我所遇到的架构问题。
我使用了一些网络服务,它们有点相似但并不完全相同。对于每个新版本的网络服务,可能会有更多的可用方法,但在大部分情况下,它们基本相同。
我希望编写一个抽象层,无论我与哪个版本的网络服务通信,都能正常工作。显然,如果我使用的某个方法仅存在于较新的版本中,那么我将收到某种错误,但这没关系。我可以处理这些错误。
我想要这个抽象层的原因是为了避免我的应用程序和它通信的网络服务版本之间的紧密耦合。
在设计我这个抽象层时,有哪些设计模式可供选择呢?我看到有一种称为适配器(Adapter)的模式,还有一种称为桥接(Bridge)的模式。在这种情况下,这些是否都可以使用呢?任何帮助都将不胜感激!
编辑—为了清晰起见,这里展示了一个图示。
有时我想让我的应用程序与网络服务版本1通信,有时我想让它使用网络服务版本2。这取决于谁使用客户端应用程序。
客户端应用程序不应该真正知道或关心它正在与哪个版本进行通信。唯一的例外是,如果它使用了某些版本中可用的方法,我需要优雅地处理它们(告诉用户他们安装了旧版本的网络服务)。