分层架构(Layered Architecture) 产品与架构

别名: 分层

按「这段代码属于哪个层」组织代码,并让依赖方向单向:界面层依赖 core,core 不 import 界面,因此 core 可以脱离 CLI 被测试、被复用。见[第 14 章](/chapters/14-product-v01-cli/)。

它是什么

分层架构(Layered Architecture)是按「这段代码属于哪个层」组织代码的架构风格,并让依赖方向单向:界面层依赖 core,core 不 import 界面。它的好处是可以脱离界面被测试、被复用——core 不依赖任何宿主,浏览器、CLI、HTTP 服务都能装它。

本产品的分层

v01 的分层形态:core = config(读参数)+ provider(wire 翻译)+ tools(注册与执行)+ loop(决策循环),core 内部除了 loop 依赖 toolsexecuteTool,互不认识;界面 = cli(组合根:读输入 → 调 core → 打印输出 + 日志)。core 的全部函数是纯函数或依赖注入(callLlm / tools 注入),因此可以脱离网络、脱离终端被测试——练习判题就是这么干的。

失败模式

分层的头号失败模式是 core 反向 import 界面:循环跑着跑着想「顺便打一行日志」,直接 import { printTrace } from './cli.mjs'——分层瞬间崩塌,core 从此只能活在 CLI 里,ch15 服务化时整个 core 要拆开重写。正确姿势是 onEvent 回调:core 发事件,界面决定怎么表达(详见第 14 章坑一)。

相关词条

出现在这些章节