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

清洁架构(Clean Architecture)中工厂应归属哪一层?接口与实现是否需分层?

清洁架构中工厂类的分层归属与接口实现惯例

工厂类的通常分层归属

工厂类的归属核心看两个维度:它创建的对象所属层级,以及它依赖的资源:

  • 若工厂创建实体(Entities)或用例(Use Cases)层的核心业务对象,且不依赖任何外部资源(比如数据库、第三方服务),这类工厂属于业务核心逻辑的一部分,通常放在用例层(少数场景下也可放在实体层)。
  • 若工厂负责创建接口适配器层或框架与驱动层的对象(比如数据库Repository实例、API客户端),或者依赖了外部资源(配置文件、数据库连接等),则工厂应放在接口适配器层或对应的驱动层。

工厂接口与实现分离的规则

遵循清洁架构的依赖倒置原则(DIP),核心规则是:

  • 抽象(工厂接口)放在内层,具体实现放在外层
    • 例如:服务于业务逻辑的工厂接口(比如IUserEntityFactory)应放在用例层,因为它是业务逻辑的抽象需求;如果该工厂的实现需要从数据库加载数据来创建实体,那么实现类就放在接口适配器层,依赖数据库相关的资源。
    • 内层(实体、用例层)仅依赖抽象接口,不关心具体实现细节;外层(接口适配器、驱动层)负责实现这些接口,同时依赖内层的抽象定义。
  • 针对外层对象的工厂:如果是创建框架层对象的抽象接口(比如IHttpClientFactory),接口可放在接口适配器层,具体实现则放在框架与驱动层(比如基于某HTTP库的实现)。

内容的提问来源于stack exchange,提问作者Filip Östermark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:10:43