3

具体来说,我使用了一个 JSON RPC API。API 版本之间的规范可能会有所不同,但当我连接时,我总能知道它是什么版本。我有大约 30 个使用可用 JSON RPC 方法的包装器方法。

你是否在任何你看到改变的地方插入 switch 语句?或者编写全新的方法以使其更易于管理,即使大多数 API 的功能没有改变并且您的代码也不必改变?

编辑:我忘了提到我希望我的代码可以使用这个 API 的多个版本,即。我不能只更新我的代码以使用 2.0 版,因为我可能想在提供此服务的另一台服务器上使用它,该服务器的版本为 1.8。

4

3 回答 3

7

我会将外部 API 隐藏在您自己的内部接口后面,然后有处理外部 API 特定版本的实现。

换句话说,在您和外部 API 之间添加另一层。

于 2013-01-16T00:25:27.720 回答
1

听起来像是一份继承权的工作。

每个版本都可以有一个基类或接口和子类。如果有帮助,您甚至可以对子类进行子类化,例如,如果有一个仅更改一种方法的点发布。

于 2013-01-16T00:24:43.093 回答
0

您可以使用数据访问对象的相同思想来组织您的代码。什么数据访问对象是一个单独的类,它具有查询数据库并从中检索数据的方法。例如,如果您有一个名为 Person 的类,并且人员类需要访问数据库以获取电话号码、名字、姓氏等数据。它可以使用此 DAO(数据访问对象的缩写)来获取这些值。它的好处是,假设您的老板要求您将数据库从 MySQL 更改为 MongoDB。然后,您不必更改 Person 类中的任何单个代码,只需修改 DAO 类以使用 MongoDB 而不是 MySQL。我的建议是创建一个为您正在使用的外部 API 构建的类,并使您的应用程序中的所有类都使用该类与外部 API 进行交互。每当 API 更新时,您只需要修改(修复)这个类,而不必触及任何其他类。我希望你明白我的意思 =)

于 2013-01-16T00:32:13.643 回答