我们如何在领域模型中处理 delete 的不同含义

How can we treat different meanings of delete in our domain model

关于 Udi Dahan 的文章,我有两个问题:Don’t Delete – Just Don’t

如果企业需要此功能并且他们说这些话,则意味着他们是无处不在的语言的一部分。在这种情况下,您可以添加删除命令。然而,建议使意图更明确;您可以将命令命名为 deleteUserBecauseOfInvalidRegistration 左右。在这种情况下,删除命令是域模型的一部分;这意味着您可以根据其他属性轻松限制用户的删除;例如,如果某个用户经过人事经理等批准,则不能再删除该用户。然后 UI 可以通过隐藏删除按钮(如果不允许该操作)来轻松反映此行为。

另一种方法是,当业务专家听到 IT 人员使用的 "delete" 这个词,因此它不是来自真实域时,您可以仅在管理员 UI 中公开此功能,因为从数据库中删除行的低级命令。然后管理员 UI 只能由某些更高级别的人员访问,例如人力资源经理。