域对象/服务和业务逻辑层
2022-09-01 02:24:47
什么是软件体系结构中的域对象和域服务?我不熟悉它们,或者它们与业务逻辑层有何不同?
什么是软件体系结构中的域对象和域服务?我不熟悉它们,或者它们与业务逻辑层有何不同?
不同的人以不同的方式使用这些术语,但这是我的看法:
1)“业务”和“域”大致是同义词。“域”更通用一些,因为它不会假设您正在编写业务应用程序。因此,如果我们要编写科学应用程序或游戏,我们可能更愿意将代码的相关部分称为“域”代码而不是“业务”代码。因此,在本解释的其余部分,我将使用“域”,因为它更通用。
2)“域逻辑”同时理解“域对象”和“域服务”。由于各种原因(技术和其他原因),许多体系结构采用一种设计,其中域逻辑分为用于存储数据的对象(“域对象”)和操纵这些对象的对象(“域服务”)。Martin Fowler和其他人指出,这并不是很OO,因为OO概念的很大一部分是将功能与数据放在一起,没错,但事实就是如此。域对象是数据,域服务是“使用数据执行操作”部分。
3)在领域驱动设计中,我们的想法是回到真正的OO设计,因此各种服务方法都回到了领域对象,这样你就有了OO意义上的对象,而不是有时被称为“贫血”的对象。在 DDD 中,域对象本身更可靠,因此它们构成了域逻辑。实际上,可能仍然有一些域服务,但这在 DDD 中通常比在更传统的域对象与服务模型中小。
业务逻辑层也称为域层。这是处理所有业务逻辑的层/层。
域对象和域服务是用于构建域层的类。