0 0

在这个场景中,我该如何应用DDD中的specification模式,我该如何设计这个领域模型5

有一个名单对象,用ArrayList保存一份客户名单,还有一些其他字段,描述这份名单.

用户在持久化这个领域对象前,系统必须检查以下业务规则:
1.名单中的人数必须大于3人
2.名单中的人数必须小于等于20人

如果违反了业务规则1,则在页面上提示"客户名单人数过少"
如果违反了业务规则2,则在页面上提示"客户名单人数过多"

我设计了2个specification,但这两个规格的判断,我应该放在哪?
是直接放在保存里,如果违反了响应的规格就抛出异常,然后捕获异常,再在页面上显示相应提示
还是,直接在control层中使用这两个规格进行业务逻辑的判断,通过就保存,不通过就返回提示
还是单独做个检查类什么的,一般正规的做法应该是怎么样的,想的头发都白了.

按照道理来说,不应该用异常来控制业务逻辑的走向,但把业务逻辑的判断直接放在control层中,貌似也违背了DDD的原则啊,我该怎么做啊.还有,在control层中,调用领域模型的代码要怎么写才更自然啊.

总之问题是,直接保存这个对象,很简单.control层直接调用领域模型中的save方法就可以了.
但是如果要在做这个操作前先判断,根据判断的不同要有不同的提示,或者判断通过了,保存对象,这个实在理不清头绪.这个判断要如何封装?还是不需要封装,直接写在control层中?
目前还没有答案

相关推荐

    领域驱动(DDD)充血模式下,domain 与 Service以及Repository的解耦---DOMAIN EVENT

    在软件开发领域,尤其是企业级应用中,领域驱动设计(Domain-Driven Design,简称DDD)是一种重要的设计思想。本文将详细探讨DDD中的“充血模式”(Bounded Contexts with Rich Domain Models),以及如何通过引入...

    领域驱动设计中的敏捷实验

    本文通过一个具体的案例——SVN权限管理问题,探讨如何在领域驱动设计中应用敏捷实验,以解决实际业务问题。 #### SVN权限管理的挑战 案例中提到的配置管理员面临的挑战,即频繁创建项目、分配成员、设置密码以及...

    领域驱动开发

    领域驱动设计(Domain-Driven Design,简称DDD)是由Eric Evans在其著作《领域驱动设计:软件核心复杂性应对之道》中提出的软件开发方法论。这种方法强调将业务领域的复杂性转化为软件设计的核心,通过密切合作的...

    Domain-Driven-Design-StepbyStep

    有界上下文是DDD中的一个重要概念,它定义了一个特定的领域模型适用的范围或边界。每个有界上下文都包含了特定的领域逻辑和规则,并与其他有界上下文明确地区分开来。 **案例:** 以电子商务为例,不同的有界上下文...

    计算机用语中常见英文缩写和词组

    在IT领域,尤其是在计算机科学与技术中,英文缩写与专业术语构成了沟通交流的重要部分。以下是对给定文件中提及的一些关键计算机用语英文缩写和词组的详细解析: ### ActiveX Data Object (ADO) ADO是Microsoft...

Global site tag (gtag.js) - Google Analytics