Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 4.83 KB

5.md

File metadata and controls

82 lines (62 loc) · 4.83 KB

DDD的类命名规范

前言

下面按照DDD分层架构进行说明:

  • 用户界面层
  • 应用层
  • 领域层
  • 基础设施层

将各个层都会用到的类归到其他的类命名规范中。

用户界面层的类命名规范

类型 说明 建议命名 示例
控制器(Controller) MVC控制器 XXXController TransferController

应用层的类命名规范

类型 说明 建议命名 示例
应用服务类(Application Service) 封装了技术逻辑,协调者,调用领域层,本身不负责业务逻辑。与领域服务类(Domain Service)同名时,通过类路径来区分。 XXXService FundsTransferService

领域层的类命名规范

类型 说明 建议命名 示例
实体(Entity) 名词 XXX Account
BrokderageAccount
Customer
Order
Invoice
Cargo
值对象(Value Object) 名词 XXX Address
SalesContact
Role
策略(Policy) 业务惯例,约束 XXXPolicy OverbookingPolicy
规格(Specification) 用于表达特定类型的规则,用来替代条件逻辑,比如“拖欠票据规格”用来验证票据是否拖欠,“大额票据规格”用来判断票据是否为大额票据。参见规格模式。 XXXSpecification DelinquentInvoiceSpecification
BigInvoiceSpecification
RouteSpecification
领域服务(Domian Service) 封装不属于任何实体/跨实体和值对象的业务逻辑 XXXService RoutingService
领域事件类(Event) 领域事件 XXXEvent/过去式 HandlingEvent
BacklogItemCommited
存储库(Repository) 数据读写 XXXRepository InvoiceRepository
TradeOrderRepository
CargoRepository
工厂类(Factory) 创建某种对象的工厂 XXXFactory BrokerageAcccountFactory

原来我将 Repository 放到了基础设施层,将 Factory 放到了其它,但是出于业务逻辑内聚的考虑,还是应该将 Repository 和 Factory 放到领域层比较合适。当然非业务逻辑的 Factory 也可以归到其它。

基础设施层的类命名规范

类型 说明 建议命名 示例
基础设施服务(Infrastructure Service) 提供基础设施服务。与领域服务类(Domain Service)同名时,通过类路径来区分。 XXXService MailService
SMSService

其它的类命名规范

类型 说明 建议命名 示例
助手类(Helper) 帮助完成某类操作的工具类 XXXHelper
工具类(Utils) 工具类 XXXUtils
数据传输对象(DTO,Data Transfer Object) 用来在各层之间传递数据的对象,不包含逻辑。 XXXDTO
视图对象(VO,View Object) View Object本质也是一种Data Transfer Object,只不过是用在用户界面层向应用层传递数据。注意,不要和DDD的Value Object值对象搞混了。 XXXVO
持久化对象(PO,Persistence Object) 用来持久化数据的对象,比如对关系数据库而言一个Persistence Object可能是JPA Entity对象。需要权衡是直接使用DDD Entity来作持久化,还是复制到一个新的JPA Entity中作持久化。 XXXPO

领域对象(DO,Domain Object,包含Entity和Value Object) 是否直接用在界面展示和数据持久化,还是需要复制并转换成View Object再在界面展示,或转换成Persistence Object再作数据持久化需要权衡。需要考虑:

  • 是否泄漏了不应该暴露的数据 (安全问题)
  • 是否读取或传输了过多的数据(性能问题)
  • 是否需要的是合并或处理后的数据(数据问题)
  • 对象复制的成本(性能问题)

https://blog.csdn.net/nklinsirui/article/details/117935538