You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

整洁架构中UI层到Infra层存在编译时依赖代表什么含义?

整洁架构UI层到Infra层编译时依赖的含义

首先明确三层的基础定位:

  • Core层为业务核心层,仅存放领域逻辑、业务规则与对外依赖的抽象接口,编译时不依赖任何外层模块
  • Infra层为基础设施实现层,是Core层定义的仓储、第三方服务等抽象接口的具体实现,比如数据库操作实现、消息队列接入实现等,编译时仅依赖Core层
  • UI层为入口交互层,负责处理前端请求、参数校验、响应封装等,标准设计下编译时仅依赖Core层

UI层到Infra层存在编译时依赖,具体代表以下含义:

  1. UI层的代码中直接引用了Infra层的具体实现类,而非仅依赖Core层定义的抽象接口。最常见的场景是在UI的业务代码(如Controller、Service)中直接实例化Infra层的实现类,而非通过依赖注入注入Core层的抽象接口
  2. Infra层的代码变更会直接影响UI层的编译结果:只要Infra层修改了实现类的方法签名、删除了某个类,哪怕Core层的抽象接口完全没有变动,UI层的代码也会直接编译报错
  3. 这种设计违反了整洁架构的依赖倒置原则:整洁架构要求所有编译时依赖必须向内指向核心层,同属外层的UI层和Infra层之间不应该存在直接的编译时依赖,避免业务核心被外层实现的变动影响
  4. 唯一的例外场景是将UI层作为DI容器的组合根:仅在UI层的启动注册文件中引用Infra层的实现类完成DI注册,业务代码完全不触碰Infra层的实现,这种场景下的编译时依赖是可接受的,且影响范围可控
  5. 存在该依赖的情况下,部署时只要修改了Infra层的代码,就必须重新编译UI层才能让变更生效;而标准的无编译依赖设计下,仅需要替换Infra层的编译产物即可,不需要重新编译UI层

内容的提问来源于stack exchange,提问作者variable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 03:39:03