贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。
优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access(ADO.NET)。当然Business Logic是依赖Domain Object的。似乎现在流行的架构就是这样,当然层次还可以细分。
该模型的缺点是不够面向对象,领域对象只是作为保存状态或者传递状态使用,所以就说只有数据没有行为的对象不是真正的对象。在Business Logic里面处理所有的业务逻辑,在POEAA(企业应用架构模式)一书中被称为Transaction Script模式。
充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等,这样层次结构就变成Client->(Business Facade)->Business Logic->Domain Object->Data Access。
它的优点是面向对象,Business Logic符合单一职责,不像在贫血模型里面那样包含所有的业务逻辑太过沉重。
缺点是如何划分业务逻辑,什么样的逻辑应该放在Domain Object中,什么样的业务逻辑应该放在Business Logic中,这是很含糊的。即使划分好了业务逻辑,由于分散在Business Logic和Domain Object层中,不能更好的分模块开发。熟悉业务逻辑的开发人员需要渗透到Domain Logic中去,而在Domian Logic又包含了持久化,对于开发者来说这十分混乱。 其次,因为Business Logic要控制事务并且为上层提供一个统一的服务调用入口点,它就必须把在Domain Logic里实现的业务逻辑全部重新包装一遍,完全属于重复劳动。
分享到:
相关推荐
贫血模型可以看作是失血模型的一种变体,也是将数据模型和业务逻辑分离,但领域对象可能会包含一些基本的数据验证逻辑。与失血模型相比,贫血模型的领域对象稍有"血色",但仍然缺乏复杂的行为。 优点: 1. 简单明了...
特别是在面向对象编程中,贫血模型(Anemic Domain Model)和充血模型(Rich Domain Model)两种设计策略,一直被广泛讨论和应用。它们代表了不同的业务逻辑和数据关系处理方式,对系统的架构和后续维护工作有着深远...
在Asp.net开发中,"充血模型"是一种提倡领域对象拥有丰富行为和业务逻辑的设计模式,相对应于传统的"贫血模型"。"贫血模型"通常将数据模型、业务逻辑和数据访问分离,使得领域对象仅包含属性,而业务逻辑和数据操作...
充血模型,也被称为“Rich Domain Model”,是领域驱动设计(DDD)中的一种核心概念。在软件开发中,领域模型是对业务领域的抽象和建模,它包含业务规则、逻辑和状态。充血模型强调对象应该拥有自己的行为和状态,而...
本资料包中的“贫血模型or领域模型.doc”文档应该提供了关于这两种模型的详细解释和对比,建议先阅读文档以获取理论基础。然后,解压“代码.zip”文件,其中包含的Java代码范例可以让你亲手实践,理解这两种模型在...
在IT行业中,MVC(Model-View-Controller)架构是一种广泛应用的软件设计模式,尤其在Web开发中。...在实践中,理解这两种模型的优缺点,并根据具体场景灵活选择,是提升软件开发效率和质量的关键。
总的来说,这个基于Go的六边形架构框架提供了一种结构化的方法来构建支持充血领域模型的后端系统。它充分利用了Go语言的优势,为开发者提供了一个清晰、可扩展和易于维护的开发环境。无论是新手还是经验丰富的开发者...
领域模型分为贫血模型和充血模型两种。 - 贫血模型指的是领域对象只包含了数据访问方法(get和set方法)和一些简单的CRUD(创建、读取、更新、删除)方法,而所有的业务逻辑都放在了BusinessLogic层。 - 充血模型则...
本文将详细探讨DDD中的“充血模式”(Bounded Contexts with Rich Domain Models),以及如何通过引入DOMAIN EVENT来实现domain、Service与Repository之间的解耦。 首先,我们来理解DDD的核心概念——领域模型...
在领域模型中,我们可以使用数据建模和对象建模两种方式来抽象系统关系。 数据建模 数据建模是基于数据库的设计方式,通过数据抽象系统关系。这意味着,我们需要将业务数据存储在数据库中,并使用 SQL language 来...
该项目为Freedom框架,是一款基于六边形架构的充血领域模型设计源码,采用Go语言开发,总计包含200个文件。文件类型涵盖了178个Go源文件、6个Markdown文档、4个TOML配置、4个YAML配置、2个SQL脚本、1个Git忽略规则、...
- **充血模型**:强调实体对象中包含业务逻辑,而非将业务逻辑放在控制层,有助于构建更清晰、更易于维护的系统结构。 #### 微服务架构与传统SOA的区别 - **服务切分粒度**:微服务更偏向于细粒度的切分,每个服务...
在描述中,“行业分类-物理装置-一种人眼充血检测装置”进一步确认了这是一个关于人眼充血检测的物理设备。人眼充血通常是眼睛炎症、疲劳或其他眼部疾病的症状,因此,这样的装置可能具有重要的临床价值,能够早期...
架构设计过程中,还会讨论不同的模型类型,如贫血模型、充血模型(领域驱动模型)和胀血模型。贫血模型中,业务逻辑主要集中在Service层,而DO(Data Object)仅包含数据;充血模型则将业务逻辑放在DO中,Service层...
领域驱动设计中的领域模型包括充血模型和贫血模型两种不同的建模方式。贫血模型主要存在于传统分层架构中,其特点是实体类中几乎没有业务逻辑,主要通过getter和setter方法来访问属性。这种模式下,业务逻辑分散在...
在医学研究中,动物模型是探究疾病机制和检验治疗效果的重要工具,尤其在消化系统疾病的研究中发挥着不可替代的作用。本篇文章将详细介绍急性胃炎和慢性胃炎的动物模型构建过程,以及这些模型在医学研究中的应用和...
如果领域模型只是用来处理简单的逻辑(比如贫血模型),那么领域模型的作用微乎其微,甚至可以忽略,数据转换的成本比领域模型带来的好处还多,这种情况其实就是在原有的分层架构中多加了一层,增加了项目的复杂性和...
贫血模型的优缺点? DDD提倡的充血模型是什么? 体会下充血模型开发微信钱包系统 聚合和聚合根是什么? 领域事件是什么? 看看领域事件的本质(解耦,异步,削峰) 工厂和资源库的作用? 领域服务是什么? 通过用例...