在本文中,我们将探讨贫血和丰富领域模型之间的区别。我们将首先定义什么是丰富对象,并将其与贫血对象进行对比。从那里开始,我们将检查一个实际的代码示例,并通过封装数据和为我们的领域模型建立一个强大的API来逐步增强其设计。
让我们首先理解丰富和贫血对象是什么。在个人博客上,Robert C. Martin,《Clean Code》的作者,讨论了贫血对象的概念,称它们为“数据结构”。他通过声明:“类使函数可见,同时使数据隐含。数据结构使数据可见,同时使函数隐含。”来强调数据结构和对象之间的根本区别。
简单来说,丰富对象隐藏了其底层数据,并且只公开一组公共方法与之交互。相比之下,贫血对象和数据结构揭示了它们的数据,并依赖外部组件进行操作。
大约 6 分钟