小编Mas*_*ghi的帖子

什么时候不应该使用领域驱动设计方法?

我一直在读关于这段我遇到的DDD

对于以数据为中心的操作,您可能最好使用Active Record模式,甚至是存储过程的DAL.您可能会在DDD的一些更粗略的方面找到一些好处,也许可以使用一些术语,但尝试使DDD适合这里将不会是一个愉快的经历.

以及这一个:

可能95%的软件应用程序属于"使用DDD不太好"的类别.大多数基本上是以数据为中心的 - 大多数网站都是,大多数桌面应用程序......基本上大多数数据更新和报告应用程序都是以数据为中心的.

所以你怎么看?你接受这个意见吗?根据这些段落,我们不能将DDD用于广泛的IT项目,我们可以吗?

domain-driven-design

11
推荐指数
3
解决办法
4076
查看次数

值对象是否包含输入参数的技术验证?

正如DDD从业者所建议的那样,业务规则的验证必须在域对象(实体,值对象和域服务)中实现,并且在我读过的某个地方也遵循他们自己的上下文,我们应该进行技术验证(例如检查长度,正确的输入格式,正确的数据类型,...)域模型和应用层之类的地方,以保持域对象清晰.

现在 我的问题是:

如果我们有信用卡号的价值对象等,我们是否应该从我们的价值对象中保留技术验证?换句话说,当我们处理价值对象时,"自我验证"一词不涉及技术验证?

如果不正确的借记卡号码甚至电子邮件地址都有可能破坏业务规则,那么呢?

为了更加清晰,请注意这个代表借记卡号码的价值对象:

    public class DebitCardNumber : ValueObject
{
    public string Number { get;private set; }

    public CreditCardNumber(string number)
    {
        Validation(number);

        this.Number = number;
    }

    private void Validation(string number)
    {
        if (String.IsNullOrWhiteSpace(number))
        {
            throw new CardNumberCanNotBeEmptyException();
        }

        if (number.Length != 16)
        {
            throw new CardNumberLengthMustBeSixteenDigitException();
        }

        int sum = 0;
        for (int i = 1; i <= 16; i++)
        {
            if (!char.IsDigit(number[i - 1]))
            {
                throw new ValueContainsSomeNonDigitCharacterException();
            }

            int m = (i % 2 == 0 …
Run Code Online (Sandbox Code Playgroud)

validation domain-driven-design

9
推荐指数
1
解决办法
2246
查看次数

标签 统计

domain-driven-design ×2

validation ×1