使用适配器模式创建API

时间:2009-11-26 01:06:59

标签: web-services api design-patterns adapter

我正在为几个Web服务开发一个API,它们都会返回一个产品列表。但是,返回的对象是完全不同的。它们在成员变量和方法中有一些重叠,但也有一些概念上不同或略有不同的数字。构建API的最佳方法是什么?我认为这是适配器模式,但我不确定。

所以,例如我的班级有(伪代码,不是真正的语言)

  

成员:webservice(类型:对象,可以是多种类型,全部都遵循相同的界面)

     

方法:setCurrentWebservice(service){self.webservice = service}

     

方法:getProducts(){return self.webservice.getProducts();}

在一个Web服务中也支持某些方法,但在另一个Web服务中则不支持。我应该制作'方法不支持'的方法吗?应该归还什么?

1 个答案:

答案 0 :(得分:0)

根据您的描述,然后使用您需要编写的内容来某种形式的适配器来统一底层实现。

如果目标是在两个服务API上提供统一的接口并隐藏确实存在两个不同的实现,那么您将需要隐藏来自您的用户的两个服务之间的所有差异最后的门面。这将需要一些工作,因为正如您所指出的,一个服务可能支持一种方法而不支持另一种方法。

如果目的只是为了提供相同的接口,以便用户在他们希望使用的底层实现之间切换,那么这可能就不那么重要了。您可以只记录实现x不支持方法y。

这里没有硬性答案:在第一种情况下你需要明确动机,因为我相信我已经说过至少有两种可能性,而且每种可能需要稍微不同的方法。但是要回答你的问题,是的,你需要一个适配器,但是如果你想说明首先提供这个API的原因,那么你想要适配器的行为是唯一可定义的。