Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在我们的领域模型中,我们如何处理删除的不同含义_Oop_Design Patterns_Domain Driven Design_Cascading Deletes_Ddd Service - Fatal编程技术网

Oop 在我们的领域模型中,我们如何处理删除的不同含义

Oop 在我们的领域模型中,我们如何处理删除的不同含义,oop,design-patterns,domain-driven-design,cascading-deletes,ddd-service,Oop,Design Patterns,Domain Driven Design,Cascading Deletes,Ddd Service,关于Udi Dahan的文章,我有两个问题: 有时我们确实需要删除,用户(领域专家)请求delete功能(真正的意思)以获取错误的数据,比如HR用户有一个表单来添加员工,他插入了错误的员工数据,他想删除此数据,它还没有在商业中使用,与退休或解雇员工完全不同。在实施过程中如何处理这两种情况 如何使UI在这种情况下更具代表性?使用两个按钮,一个仅在我们可以删除员工时显示,另一个在我们想退休员工时显示 如果企业想要这种功能,如果他们说这种话,那就意味着他们是无处不在的语言的一部分。在这种情况下,您可

关于Udi Dahan的文章,我有两个问题:

  • 有时我们确实需要删除,用户(领域专家)请求
    delete
    功能(真正的意思)以获取错误的数据,比如HR用户有一个表单来添加员工,他插入了错误的员工数据,他想删除此数据,它还没有在商业中使用,与退休或解雇员工完全不同。在实施过程中如何处理这两种情况
  • 如何使UI在这种情况下更具代表性?使用两个按钮,一个仅在我们可以
    删除员工时显示,另一个在我们想
    退休员工时显示

如果企业想要这种功能,如果他们说这种话,那就意味着他们是无处不在的语言的一部分。在这种情况下,您可以添加delete命令。但是,建议更清楚地说明意图;您可以将该命令命名为
deleteUserBecauseOfInvalidRegistration
等等。在这种情况下,delete命令是域模型的一部分;这意味着您可以根据其他属性轻松限制用户的删除;例如,如果用户已获得人力资源经理的批准,则无法再删除该用户。如果不允许该操作,则UI可以通过隐藏delete按钮轻松反映此行为


另一种选择是,当业务专家听到IT人员使用“delete”一词时,您可能只在管理UI中公开此功能,作为从数据库中删除行的低级命令。管理员界面只能由一些更高级别的人员访问,如人力资源经理。

与其删除,不如更正员工属性,如更改其名称?如果您确实想“删除”员工,则必须对操作“删除”或“无效”进行建模。如果您使用的是事件源,那么即使发出了命令,您也不会删除该员工。