1

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

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

member: webservice (type:object, 可以是多种类型,都遵循同一个接口)

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

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

此外,一个 Web 服务支持某些方法,但另一个 Web 服务不支持。我应该制作“方法不支持”的方法吗?那些应该返回什么?

4

1 回答 1

0

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

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

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

这里没有一成不变的答案:在第一种情况下,您需要明确动机,因为我相信正如我所说的那样,至少有两种可能性,每种可能性都可能需要稍微不同的方法。但是要回答您的问题,是的,您需要一个适配器,但是您希望适配器的行为方式只有在您首先说明提供此 API 的原因时才能定义。

于 2009-11-26T01:30:37.993 回答