`
臻是二哥
  • 浏览: 188543 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

业务对象的贫血模型与充血模型

阅读更多
业务对象是指那些从实际业务场景中抽象出来的对象,这些对象在代码中对应的就是一些业务对象类。

在常见的SSH框架的开发中,一般的做法是将每一个业务对象对应一个POLO,当然这是为了方便使用ORM框架。当我们把业务对象实现为POJO的时候,我们实际上是在使用业务对象贫血模式。下面是业务对象贫血模型图:(业务对象类既领域层的model)




在贫血模型中,业务对象仅仅包含数据而不包含行为,他的作用只是数据的载体或者说是数据的传递介质。系统的业务逻辑全部放到业务逻辑层,会导致业务逻辑层比较庞大。

为了避免出现贫血模型中业务逻辑层较庞大的缺点,考虑将一些恰当的业务逻辑放到业务对象类中,即贫血模型的POJO类中。下面是业务对象充血模型图:(业务对象类既领域层的model)



在充血模型中,业务对象既包含数据又包含行为,他的作用不再只是数据的载体而是一个真正有行为的对象。此时,领域层作为软件体系的一个层次出现而非贫血模式中的辅助的角色。

贫血模型和充血模型,两个各有优势:

贫血模型的系统层次清楚,但是不够面向对象。在业务逻辑层处理所有的业务逻辑,太过沉重。

充血模型足够面向对象,业务逻辑层符合单一职责原则,不像在贫血模型里面那样太过沉重。但是如何将业务逻辑划分到业务层和领域层比较含糊。

  • 大小: 61.5 KB
  • 大小: 67.5 KB
1
7
分享到:
评论

相关推荐

    失血贫血充血胀血模型.docx

    胀血模型是对充血模型的一种扩展,领域对象不仅包含业务逻辑,还可能包含基础设施相关的代码,如数据访问代码。这种模型可能导致对象过于庞大,不易维护。 优点: 1. 自包含:领域对象能自我处理所有事务,无需依赖...

    对贫血和充血模型的理解

    贫血模型和充血模型是两种在软件开发,尤其是面向对象编程中常见的设计策略,主要应用于领域驱动设计(Domain-Driven Design, DDD)中。这两种模型主要关注于业务逻辑和数据之间的关系,以及如何在软件架构中有效地...

    11丨实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?1

    另一方面,"充血模型"(也称为富域模型)则在领域对象中包含业务逻辑。在这种模式下,`User`对象不仅包含了数据,还包含了处理这些数据的方法,使得模型对象更加"饱满"。这种设计更符合领域驱动设计(DDD)的理念,...

    浅谈Asp.net中使用“充血模型”1

    在Asp.net开发中,"充血模型"是一种提倡领域对象拥有丰富行为和业务逻辑的设计模式,相对应于传统的"贫血模型"。"贫血模型"通常将数据模型、业务逻辑和数据访问分离,使得领域对象仅包含属性,而业务逻辑和数据操作...

    充血模型设想实现(2010/07/30更新)

    这个模型与贫血模型相对,后者通常由无行为的POJO(Plain Old Java Object)或DTO(Data Transfer Object)组成,业务逻辑被分离到服务层。 在2010年的更新中,博主可能讨论了如何在实际项目中应用充血模型,可能...

    领域模型说明及范例代码.zip

    虽然贫血模型简化了对象的设计,但它的缺点是业务逻辑分散,导致代码的可读性和可测试性降低,且增加了模块之间的耦合。 现在我们来比较这两种模型。领域模型强调业务逻辑的封装,使得模型对象更富有生命力,但可能...

    领域驱动设计案例-盒马实践

    在充血模型中,业务逻辑是集中在中心对象中,并且使用Repository 模式来管理业务数据。 依赖注入 依赖注入是领域模型中的一种设计模式,它指的是在 runtime 时将对象之间的依赖关系注入到对象中。在 Spring 框架中...

    领域模型驱动设计1553265830.pdf

    - 充血模型则是将大部分的业务逻辑和持久化逻辑放在了DomainObject(领域对象)内,而BusinessLogic层仅用于封装部分业务逻辑以及控制事务、权限等。充血模型将业务逻辑和数据封装在一起,更符合面向对象设计的原则...

    基于GO的六边形架构框架,可支撑充血的领域模型范式代码实现.rar

    在传统的贫血模型中,领域对象通常只包含数据,而业务逻辑则分散在服务层或其他地方。然而,在充血模型中,领域对象不仅包含了数据,还封装了大量的业务逻辑。这种方法使得领域模型更加生动且有力量,因为它们可以...

    基于领域分析设计的架构规范.docx

    总结来说,基于领域分析设计的架构规范着重于如何通过读写隔离优化查询操作,利用状态图揭示核心业务逻辑,并通过对比贫血模型和充血模型,强调了业务逻辑应与数据结构紧密结合,以提升软件设计的质量和效率。...

    DDD领域驱动设计day02.pdf

    相反,充血模型则将业务逻辑放到实体类内部,使得实体类不仅仅是一个数据结构,而是一个拥有丰富行为的完整对象。在充血模型中,实体类拥有自己的业务方法,这些方法定义了实体的业务规则和行为。 服务(Service)...

    DDD领域驱动设计day01.pdf

    7. **贫血模型**与**充血模型**:贫血模型是指对象主要负责数据传输,业务逻辑存在于服务层;充血模型则强调领域对象内含业务逻辑,对象自身具有行为。 8. **微服务**:DDD常与微服务架构结合,每个微服务专注于一...

    软件架构技术公司内部交流

    架构设计过程中,还会讨论不同的模型类型,如贫血模型、充血模型(领域驱动模型)和胀血模型。贫血模型中,业务逻辑主要集中在Service层,而DO(Data Object)仅包含数据;充血模型则将业务逻辑放在DO中,Service层...

    领域驱动设计学习总结(一)

    2. **领域建模**:构建能够反映业务逻辑的领域模型,避免贫血模型,提倡使用充血模型,即将业务逻辑封装在实体对象内部。 **四、DDD的实践** 1. **领域模型设计**:通常分为战略设计(宏观视角)和战术设计(微观...

    JAVA面试题(下).pdf

    16. 领域模型(Domain Model)和贫血模型(Anaemic Domain Model)与充血模型(Rich Domain Model)的区别在于,贫血模型将业务逻辑放在服务层,而充血模型则将业务逻辑放在领域模型的实体中。 17. 测试驱动开发...

    s2sh网上购物项目

    在设计上,可能采用贫血模型或充血模型,根据业务需求选择合适的对象状态管理方式。 数据库设计是项目的关键部分,可能包括用户表、商品表、订单表、购物车表等,需要考虑到数据的一致性、安全性和性能。例如,用户...

    支付场景微服务实战

    - **充血模型**: 与贫血模型相反,领域对象包含了丰富的业务逻辑和行为,更符合领域驱动设计的原则。 - **限界上下文**: 是 DDD 中的一个概念,用来明确地界定不同领域模型的作用范围,有助于解决模型冲突和复杂度...

    人事管理项目(java+mysql)源代码

    同时,为了保证代码的可维护性和扩展性,良好的设计原则和模式(如单一职责原则、工厂模式、贫血模型/充血模型等)应当被遵循。 此外,项目的源代码可能会包含Maven或Gradle等构建工具的配置,以自动化构建和依赖...

    C#企业人事管理系统

    设计模式如工厂模式、单例模式、贫血模型或充血模型等可能被应用到各个层次,提高代码的可维护性和复用性。 6. 数据库设计:在SQL Server 2005中,需要设计合理的数据库表结构,包括员工表、部门表、职位表等,确保...

    企业面试题精选800题.pdf

    5. **领域模型**:在软件工程中,领域模型代表了业务领域的概念,贫血模型将业务逻辑放在服务层,而充血模型将业务逻辑包含在领域对象内部。 6. **HTTP和HTTPS协议**:HTTP是超文本传输协议,用于传输数据;HTTPS是...

Global site tag (gtag.js) - Google Analytics