我正在学习 DDD 并尝试使用领域驱动设计对用户注册过程进行建模。让我们想象一个晚餐托管系统,其中主持人和客人是两个实体。主人将是在系统中创建晚餐的人,客人将加入晚餐,向主人支付账单,对晚餐进行评分等。主人和客人都将是晚餐托管系统的用户。我创建了三个实体,如下所示:
在这里,我看到用户不能单独存在。它永远是主人或客人。所以在这个系统中,应该有两个聚合根——Host和Guest。用户实体将成为每个聚合的一部分。
用户也将按如下方式注册
输入手机号码并提交
由于完整的用户信息是分步收集的,并且由于用户可以在注册过程中终止应用程序,因此,在最后一步成功完成之前,用户/主机/访客实体不应该对系统有效,我该如何使用 DDD 创建/保存用户/主机/来宾实体?
Web应用的用户注册系统的中心业务实体是用户。为了保持数据持久性,RegisterUser 用例与 UserRepository 接口交互并验证输入数据。
用于存储用户数据的数据库驱动程序和用于管理 HTTP 请求的 Web 框架是外部框架(也称为驱动程序层)中包含的组件的示例。因此,用户是一个聚合根,主机和来宾为此继承和嵌套。
另一个聚合根实体是Dinner,不同类型的晚餐菜单将从中继承。