1. Branch by Abstraction 模式中在共享主干上抽象后替换实现(无分支)
什么是 Branch by Abstraction(通过抽象分支)模式?为什么它能在共享主干上实现无分支的架构演进?
- 与"源码分支"(feature branch)的本质区别
- 抽象层(seam)的引入与迁移
- 新旧实现共存与切换
Branch by Abstraction(BbA)是一种在共享主干上进行大重构/迁移的演进模式,核心是"用抽象层代替源码分支"。它不创建长期 feature branch,而是先在旧实现外层引入一个抽象接口(seam),把调用方改为通过抽象访问,然后在新实现上实现同一抽象,让新旧实现并存,最后逐步把调用方迁移到新实现并删除旧实现。其关键价值是:演进过程始终可集成、可测试、可回滚,团队在主干上通过"抽象"这一替代分支来并行推进,避免长期合并(merge)地狱。典型场景是数据库迁移、框架替换、服务拆分。
BbA 与 feature branch 的本质区别在于"分支的载体":feature branch 把分叉放在版本控制,合并时冲突集中爆发;BbA 把分叉放在抽象层,冲突被逐步消化。它依赖"抽象边界"的稳定设计,配合演进看板与门禁管理,是"无分支演进"理念的落地。其难点是抽象层设计的正确性与迁移节奏的把控。