Java和;“通用”;接口

Java和;“通用”;接口,java,generics,service,web,interface,Java,Generics,Service,Web,Interface,我很快需要实现一个接口。该接口需要在一个web服务和“n”个其他用于公路交通控制的web服务之间提供合同。该公司计划首先使用单一的交通控制服务进行调查/测试,然后在可用时添加更多。我可以为这个单一用例定义一个“通用”的接口,但问题是,在将来的任何时候,我们都可能希望与另一个web服务进行通信,该服务可能与我们当时的接口兼容,也可能与我们当时的接口不兼容 我可以修改Java接口,以适应API与第三方服务之间的差异。这也意味着更新接口的所有实现者 我想知道是否有适合这种情况的模式。几乎就像运行时的“

我很快需要实现一个接口。该接口需要在一个web服务和“n”个其他用于公路交通控制的web服务之间提供合同。该公司计划首先使用单一的交通控制服务进行调查/测试,然后在可用时添加更多。我可以为这个单一用例定义一个“通用”的接口,但问题是,在将来的任何时候,我们都可能希望与另一个web服务进行通信,该服务可能与我们当时的接口兼容,也可能与我们当时的接口不兼容

我可以修改Java接口,以适应API与第三方服务之间的差异。这也意味着更新接口的所有实现者

我想知道是否有适合这种情况的模式。几乎就像运行时的“动态扩展接口”。或者,聪明地使用Java泛型,使我们能够实现一个Java接口,该接口可用于任何/所有交通控制系统

一句话:当我们与任何其他第三方服务进行通信时,我希望尽可能少的努力来集成它们


有什么想法吗

如果问题是为相同的语义调整不同的表示,那么定义包含所有所需语义的您自己的接口,并创建一个适配器层,将自定义表示转换为您的。这与设备驱动程序背后的原理相同。一个统一的客户端接口和多个适配器到不同的设备

如果您希望遇到语义迥异的“设备”(交通控制服务),那么您将不得不拥有多种驱动程序类型。。。同样,与块设备和字符设备之间的差异情况完全相同


您的情况只是另一个众所周知且已解决的模式示例:-)

这是一个相当模糊的问题。你的界面并没有什么特别的问题。你没有给我们一个暗示,它会是什么样子。您询问的是甚至还不存在的潜在新服务提供商。您没有解释接口(表示消息的对象、Java客户机等)的含义。最后,您没有提到您计划使用的服务类型。大型网络服务?RESTful web服务?我知道这很模糊,但这就是我的要求。我们的web应用程序将调用工厂来接收接口的植入。该实现将使用未知服务。我想知道是否有什么Java/接口魔法可以用来减轻以后集成未知服务的负担。例如,在获得所需数据之前,第三方服务可能需要1..*个请求/响应。每个请求可能有1..*个参数。我知道这是模糊的,我怀疑答案是否定的,但我至少想问一下。你不能用额外的间接层来解决模糊的、未定义的需求。暂时搁置,因为太宽泛了??显然不是因为我现在有线索。。。设备驱动程序。谢谢你这么快回答,吉姆!从大型机时代(1975年)开始,我就一直在做软件,我很惊讶它是如何一次又一次地出现几十个相同的概念性问题。大多数“新”范式已经存在很长时间了(例如,虚拟机是在20世纪60年代完成的)。抓住要点,接受路径。再次感谢你,吉姆