当前位置: 首页 > 面试题库 >

域对象/服务和业务逻辑层

慎建本
2023-03-14
问题内容

软件体系结构中的域对象和域服务是什么?我不熟悉它们,或者它们与业务逻辑层有何不同?


问题答案:

不同的人以不同的方式使用这些术语,但这是我的看法:

1)“业务”和“域”大致是同义词。“域”更为通用,因为它不会假设您正在编写业务应用程序。因此,如果我们正在编写科学应用程序或游戏,则可能更喜欢将代码的相关部分称为“域”代码,而不是“业务”代码。因此,在本说明的其余部分中,我将使用“域”,因为它更为笼统。

2)“域逻辑”既包含“域对象”又包含“域服务”。由于各种原因(技术原因和其他原因),许多体系结构都采用了一种设计,其中域逻辑分为用于存储数据的对象(“域对象”)和操作这些对象的对象(“域服务”)。Martin
Fowler和其他人指出,这不是面向对象,
因为OO概念的很大一部分是将功能与数据放在一起,这是正确的,但事实就是如此。域对象是数据,而域服务是数据处理部分。

3)在域驱动的设计中,其想法是回到真正的OO设计,因此各种服务方法都将其返回到域对象,以便您拥有面向对象的对象,而不是有时称为“贫乏的”对象。
”对象。在DDD中,域对象本身更健壮,因此它们形成域逻辑。实际上,仍然可能会有一些域服务,但是DDD中的域服务通常比传统域对象与服务模型中的域服务小。



 类似资料:
  • 因此,每个功能区显然都在数据库中,但它们还需要一些逻辑来确定用户何时获得了功能区。 按照我的编码方式,是一个简单的接口: 是一个抽象类,它实现了接口,避免了方法的定义: 现在,将像这样实现一个特定的功能区: 这段代码工作得很好,表是按照我期望的方式在数据库中创建的(我在本地环境中使用DDL生成)。 问题是,在域对象中编写业务逻辑感觉是错误的。这是好的练习吗?你能提出一个更好的解决方案吗?此外,我不

  • 综述 在多功能的动态web应用程序中测试业务逻辑漏洞需要用非常规手段来思考。如果应用认证机制原先以1、2、3的步骤依次执行的验证身份目的来开发,万一用户从步骤1直接跳到步骤3会发生什么?用更加简单的例子来说,在打开失败、权限拒绝或仅仅500的错误的情况下,应用程序是否依然能够提供访问权限? 可以举出许多例子,但是不变的思想是“跳出常规思维”。这种类型的漏洞无法被漏洞扫描工具探测到,依赖于渗透测试人

  • 1.1  概述 业务逻辑模块主要用于编写业务逻辑,一般包含三个子模块:action(定义action和procedure)、code(业务逻辑的实现,一般使用java实现,有src,dsrc,lib)、fn(函数定义)。 1.2  Action定义 语法: <action name=" n" global="true" log-enabled="true" procedure=" "> <参

  • 我有一个struts项目,我的客户给了我完整的业务逻辑类。他需要这个忘恩负义的人,昂首阔步,冬眠。 哪一种最好,要将业务逻辑放到我的Dao层,需要为业务逻辑添加一个附加的服务层。 一些strut项目我发现动作类直接访问道。 请建议我哪个更好choice.help高度赞赏。 谢谢,

  • 问题内容: 我的应用程序中有两层验证。首先是由bean验证API执行的实体验证(例如,必填字段)。第二层是业务逻辑验证。例如,用户有一个帖子。用户只有自己是该帖子的创建者,并且帖子评级小于50,才能删除该帖子。因此,我必须执行以下操作: 我不喜欢这种方式,因为这种条件被重用,而且我不得不重复代码。此外,如果条件数大于5左右,那么阅读和理解代码就变得不现实。 此外,标准的Spring Validat