不同的人以不同的方式使用这些术语,但这是我的看法:
1)“业务”和“域”大致是同义词。“域”更为通用,因为它不会假设您正在编写业务应用程序。因此,如果我们正在编写科学应用程序或游戏,则可能更喜欢将代码的相关部分称为“域”代码,而不是“业务”代码。因此,在本说明的其余部分中,我将使用“域”,因为它更为笼统。
2)“域逻辑”既包含“域对象”又包含“域服务”。由于各种原因(技术原因和其他原因),许多体系结构都采用了一种设计,其中域逻辑分为用于存储数据的对象(“域对象”)和操作这些对象的对象(“域服务”)。Martin
Fowler和其他人指出,这不是面向对象,因为OO概念的很大一部分是将功能与数据放在一起,这是正确的,但事实就是如此。域对象是数据,而域服务是数据处理部分。
3)在域驱动的设计中,其想法是回到真正的OO设计,因此各种服务方法都将其返回到域对象,以便您拥有面向对象的对象,而不是有时称为“贫乏的”对象。
”对象。在DDD中,域对象本身更健壮,因此它们形成域逻辑。实际上,仍然可能会有一些域服务,但是DDD中的域服务通常比传统域对象与服务模型中的域服务小。



