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

整洁架构中,Entity是否需要区分单复数形式?

整洁架构下User与Users实体的拆分疑问(基于单一职责原则)

在整洁架构体系下,我有个疑问:如果定义User和Users两种Entity,依据单一职责原则,是否应该将它们拆分?因为针对单个用户与多个用户的数据库接口策略可能需要区分。以下是粗略示例:

interface UserDb {
  createUser()
  getUserById()
  deleteSingleUser()
}

interface UsersDb {
  deleteMultipleUsers()
  flagMultipleUser()
}

interface UserObj {
  id: string
  reportedFlag: boolean
  createdOn: string
  hashedPassword: string
  name: string
}

class User {

  #dbAccessor: UserDb;
  constructor(dbAccessor) {
    #dbAccessor = dbAccessor;
  }

  createNewUser(email, hashedpw) {
    this.#dbAccessor.createUser(email, hashedpw)
  }

 // ...
}

class Users {

  #dbAccessor: UsersDb;
  constructor(dbAccessor) {
    #dbAccessor = dbAccessor;
  }

  flagUsers(userIdArr) {
    this.#dbAccessor.flagMultipleUsers(userIdArr)
  }
}

从单一职责原则和整洁架构的核心思想来看,这种拆分是合理的,但也要结合实际场景权衡:

  • 单一职责匹配:User类专注于单个用户的生命周期操作(创建、查询、删除单个用户),Users类专注于批量用户操作(批量删除、批量标记),两者的职责边界清晰,符合"一个类只负责一个功能领域"的原则,避免把单实例和多实例操作混在同一个类里导致职责臃肿。
  • 数据库策略适配:你拆分的数据库接口(UserDb和UsersDb)正好对应这种职责划分,批量操作往往需要不同的数据库优化策略(比如批量SQL语句、事务处理),拆分后可以让各自的数据库访问逻辑更聚焦,也便于后续针对批量操作做独立优化。
  • 整洁架构分层:在整洁架构中,实体层(Entity)应该是最核心、最稳定的部分,这种拆分不会破坏实体的核心属性(UserObj作为数据模型保持独立),反而让业务逻辑层的操作更清晰,上层业务服务可以按需依赖User或Users类,符合依赖倒置原则。

不过也要注意避免过度拆分:如果批量操作只是偶尔出现且逻辑简单,也可以考虑在User相关的仓储层中增加批量方法,但如果批量操作有独立的业务规则、性能要求,那拆分就是更优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:10:41