gpt4 book ai didi

c# - DDD - 如何强制执行不变量但特定于客户要求?

转载 作者:行者123 更新时间:2023-12-05 06:01:02 30 4
gpt4 key购买 nike

我正在尝试弄清楚如何使项目的一些消费者(业务客户)的不变量保持一致,他们对同一版本的聚合根有自己的要求。让我们以客户为例,提出假设性问题以满足以下愚蠢的逻辑:

public class Customer 
{
public Id { get; private set;}
public string Name { get; private set;}

public void SetName(string name){
//client1 -> requires the name not to be null
//client2 -> requires the name can start with "J"
//client3 -> some other business logic
this.Name = name;
}
}

现在,我想到的是像这样自定义验证/不变检查策略逻辑:

public void SetName(string name, INameCheckStrategy strategy){
if(!strategy.IsSatisfiedBy(name)) throw new BusinessException("name does not meet the invariant check!");
this.Name = name;
}

在哪里

public class Client1NameCheckStrategy : INameCheckStrategy {
public bool IsSatisfiedBy(string name){
return name != null;
}
}

任何想法如何处理这样的问题?

最佳答案

您可以采用某种 DDDD(“动态域驱动设计”,创造一个短语)方法,将域中的规则具体化为它们自己的聚合,并将它们与客户端相关联。如果您要对更改规则进行建模,这可能会使事情变得有趣(您如何处理使聚合被先前规则视为有效的更改?)。

关于c# - DDD - 如何强制执行不变量但特定于客户要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67361588/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com