重构技术之 API 扩展-收缩

随着业务的发展,我们通常会采用复杂的版本控制和破坏性的修改来实现 API 升级,而这些升级往往是不能向下兼容的。利用API 扩展-收缩这个模式可以控制这种升级给整个产品带来的风险。

API 扩展-收缩 英文翻译为 expand and contract,也有种更高级的叫法是 Parallel Change。相比一次性的将 API 修改替换到位(常常也是不可能的),它将一次更改拆分成了三个阶段:

  1. 扩展 expand
  2. 迁移 migrate
  3. 收缩 contract

扩展阶段的主要工作是将原来的 API 兼容新旧两种数据,在 Java 看来可以利用对象的多态来实现;迁移阶段是逐步将老的接口调用改成新的接口调用(当然新用户直接用新接口),这个阶段往往需要持续很长时间;当确认所有接口都已迁移完毕,则进入收缩阶段 —— 把旧的接口干掉。

这个模式的理念不难理解,但有两个点还是需要技术人员自己斟酌的:

  1. 如何”确认“进入收缩阶段,尤其是当你的接口是对外提供的,那就更难了;
  2. 对于 JS 这类没有原生提供多态的开发语言,要如何进行第一步的扩展

但我觉得这个模式的亮点在于前两个步骤,保证了 API 的升级不会引起代码的崩溃。

参考文章:ParallelChange

posted @ 2021-06-22 14:16  尹宇星_Kim  阅读(144)  评论(0编辑  收藏  举报