背景:所以,我正在尝试构建一个复杂得离谱的领域模型。与用户交谈,系统的使用方式有多种(例如:一种是从员工的角度;另一种是从雇主的角度)。实际上,它们是重用核心域的多个应用程序。
问题:从多个角度创建域是错误的吗?例如,在业务运行时构建域意味着创建各种关系类,这些关系类包含有关实体的额外信息等等......但是,从特定角度运行时,情况会更加清晰,因为大多数关系类可以滚动到它们的父实体中。
想法?反驳?我完全脱离基地了吗?
背景:所以,我正在尝试构建一个复杂得离谱的领域模型。与用户交谈,系统的使用方式有多种(例如:一种是从员工的角度;另一种是从雇主的角度)。实际上,它们是重用核心域的多个应用程序。
问题:从多个角度创建域是错误的吗?例如,在业务运行时构建域意味着创建各种关系类,这些关系类包含有关实体的额外信息等等......但是,从特定角度运行时,情况会更加清晰,因为大多数关系类可以滚动到它们的父实体中。
想法?反驳?我完全脱离基地了吗?
不,这绝对合适。Evan 在他的书中称这些“观点”为限界上下文。
与其拥有一个非常复杂的域模型,不如尝试构建一个以特定方式很好地解决域的简单模型。限界上下文可以链接在一起,形成一个更小、更简单、直接的领域模型的网络。
我认为您不应该尝试预先定义“核心域”。让它出现在开发过程中。此外,任何对 2 个(或更多)观点不常见的东西都不应该在“核心”中。
例如,从员工的角度构建系统的一部分。这可能会提示您创建“项目”、“任务”和“客户”等实体。然后从员工的角度构建一部分。这可能会提示您构建新实体,并重用“项目”和“任务”。那时我会将“项目”和“任务”移动到系统其余部分共享的“核心库”。
有时您会发现共同的实体,但以不同的方式相关。在这种情况下,关系应该由上下文注入,而不是内置于实体本身。