DDD 思想解读
战略设计层面限界上下文:通过限界上下文划分不同业务边界,如在银行系统中,账户管理、交易处理可作为不同限界上下文,保证不同业务概念和逻辑的独立性,避免混淆。
获课:keyouit.xyz/1964/
获取ZY↑↑方打开链接↑↑
通用语言:团队成员包括领域专家、开发人员等统一使用业务相关的特定术语和概念进行沟通,如在电商系统中,“订单”“库存” 等术语有明确统一的定义,减少沟通成本和误解。
子域:把复杂业务领域分解为核心域、通用域和支撑域。如在网约车系统中,订单匹配与调度是核心域,用户认证和支付是通用域,消息推送是支撑域。
- 战术设计层面实体:具有唯一标识和生命周期,如在人力资源系统中的员工实体,员工 ID 作为唯一标识,员工的入职、离职等操作体现其生命周期。
- 值对象:用于描述实体属性特征,像员工实体中的薪资、地址等是值对象,它们没有独立标识符,仅作为描述信息
- 。领域服务:当业务逻辑不适合放在实体或值对象中,如在电商系统中,跨订单、库存、支付多个聚合的订单结算逻辑可放在领域服务中。
- 领域事件:用于记录业务过程中的重要事件,如订单创建、订单支付成功等事件,可触发后续的业务操作或数据更新,实现业务解耦和异步处理。
优秀实践
大型互联网电商平台战略设计:将平台划分为商品中心、订单中心、用户中心、营销中心等多个限界上下文,各中心有独立的团队和业务逻辑。各中心之间通过共享内核(如用户基础信息)、开放主机服务(如商品中心为其他中心提供商品查询服务)等上下文映射关系进行协作。
战术设计:在订单中心,订单是聚合根,订单明细、订单状态等是实体和值对象。通过领域事件记录订单状态变化,如订单创建事件、订单发货事件等。领域服务负责处理订单的复杂业务逻辑,如订单结算、订单拆分等。
- 金融证券交易系统战略设计:划分交易子域、风险管理子域、账户管理子域等。交易子域是核心域,与风险管理子域通过防腐层进行交互,防止交易子域的变化对风险管理子域产生过度影响。战术设计:在交易子域中,交易订单是聚合根,交易指令、交易价格等是相关实体和值对象。利用领域事件实现交易的异步处理和消息通知,如交易成功事件通知用户和更新账户余额。仓库负责交易数据的持久化和查询,保证数据的一致性和高效访问。