From 6413bb3dd6fd6123ec578ea4edeecbf246c1df0c Mon Sep 17 00:00:00 2001 From: Xargin Date: Sun, 17 Jun 2018 17:40:58 +0800 Subject: [PATCH] interface start --- ch5-web/ch5-08-interface-and-web.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ch5-web/ch5-08-interface-and-web.md b/ch5-web/ch5-08-interface-and-web.md index d5689b0..a8192a9 100644 --- a/ch5-web/ch5-08-interface-and-web.md +++ b/ch5-web/ch5-08-interface-and-web.md @@ -1,6 +1,14 @@ # 5.8. interface 和 table-driven 开发 -在项目中我们有可能遇到这样的场景:公司内的基础架构因为技术实力原因,最早是从别人那里借来的 kv 存储方案。随着公司的发展,渐渐有大牛加入,想要甩掉这个借来的包袱自研 kv 存储,但接口与之前的 kv 存储不兼容。接入时需要业务改动接入代码,怎么写代码才能让我的核心业务逻辑不受这些外部资源变化影响呢。 +在 web 项目中经常会遇到外部依赖环境的变化,比如: + +1. 公司的老存储系统年久失修,现在已经没有人维护了,新的系统上线也没有考虑平滑迁移,但最后通牒已下,要求 N 天之内迁移完毕。 +2. 平台部门的老用户系统年久失修(怎么都是年久失修,摔!),现在已经没有人维护了,真是悲伤的故事。新系统上线没有考虑兼容老接口,但最后通牒已下,要求 N 个月之内迁移完毕。 +3. 公司的老消息队列人走茶凉,年久失修(汗),新来的技术精英们没有考虑向前兼容,但最后通牒已下,要求半年之内迁移完毕。 + +嗯,所以你看到了,我们的外部依赖总是为了自己爽而不断地做升级而不想做向前兼容,然后来给我们下最后通牒。如果我们的部门工作饱和,领导强势,那么有时候也可以倒逼依赖方来做兼容。但世事不一定如人愿望,即使我们的领导强势,读者朋友的领导也还是可能认怂的。 + +我们可以思考一下怎么解决这个问题。 ## 使用 interface 来做抽象