目前流行的Java EE应用架构通常会使用Spring作为核心,向上整合MVC框架,向下整合ORM框架。 我们在考虑使用某种架构时,应该主要考虑这种架构是否能成功的将规范与实现分离,从而提供较好的扩展性、可修改性,最理想的情况是,当我们修改某个组件时,应用中的其他组件基本可以不受影响。 目前流行的Java EE应用架构通常会使用Spring作为核心,向上
原创 2023-05-19 15:50:54
45阅读
Martin Fowler很早以前就写过一篇文章,题目叫”贫血模型”。文章里面批判贫血的领域模型是不够优雅、不够OO的,提倡使用充血的领域模型。在Java世界里这是一直争论的话题。到底什么是贫血什么是充血呢?贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。 优点是系统的层次结构清楚,各层之间单向依赖,Cl
转载 2023-09-15 10:39:13
127阅读
实际上,目前几乎所有的业务后端系统,都是基于贫血模型的。举一个简单的例子.我们平时开发 Web 后端项目的时候,基本上都是这何业务逻辑。业务逻辑集中在 UserService 中。
原创 2024-04-30 14:22:26
24阅读
Java开发过程中,开发者通常会面临“充血模型”和“贫血模型”这两种领域模型的选择。充血模型强调将业务逻辑和数据封装在对象内,而贫血模型则将业务逻辑放置于服务层,将数据和行为分离。找到适合项目需求的模型,对于系统架构设计、维护性及性能至关重要。接下来,我将详细记录我在解决Java中充血模型贫血模型问题的过程,包括背景定位、演进历程、架构设计、性能攻坚、故障复盘以及复盘总结。 ### 背景定位
领域驱动设计(Domain Driven Design,简称 DDD) 基于贫血模型的传统开发模式,将数据与业务逻辑分离,违反了 OOP 的封装特性,实际上是一种面向过程的编程风格。但是,现在几乎所有的 Web 项目,都是基于这种贫血模型的开发模式,甚至连 Java Spring 框架的官方 demo,都是按照这种开发模式来编写的。面向过程编程风格有种种弊端,比如,数据和操作分离之后,数据本身的操
贫血模型什么是贫血模型贫血模型就是缺血了,缺东西,也就是只有数据但是没有业务逻辑或者有业务逻辑但是没有数据。比如你有一个计算类,他有一个加法计算的方法。但是他不持有计算的数据。和贫血模型对应的就是充血模型。什么是充血模型?充血模型就是不缺血了,有数据同样有业务逻辑。比如你的计算类现在不只有加法计算,还有需要的数据。我们现在进行的开发基本上都是基于贫血模型开发的。比如一个电商系统,有商品模型,但是
失血模型模型仅仅包含数据的定义和getter/setter方法,业务逻辑和应用逻辑都放到服务层中。这种类在java中叫POJO。贫血模型贫血模型中包含了一些业务逻辑,但不包含依赖持久层的业务逻辑。这部分依赖于持久层的业务逻辑将会放到服务层中。可以看出,贫血模型中的领域对象是不依赖于持久层的。充血模型:充血模型中包含了所有的业务逻辑,包括依赖于持久层的业务逻辑。所以,使用充血模型的领域层是依赖于
贫血模型很多业务系统都是基于 MVC 三层架构来开发的。实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式。领域驱动设计(Domain Driven Design,简称 DDD)
原创 2021-08-24 15:45:39
556阅读
DDD(Domain Driven Design)早于微服务「出道」十年,这两个「忘年交」的软件设计哲学是如何相爱相杀的?背景微服务现在可以说是软件研发领域无人不提的话题,然而业界流行的对比多数都是所谓的Monolithic(单体应用),而大量的系统在十几年前都已经是以SOA(面向服务架构)为基础的分布式系统了,那么微服务作为新的架构标准与SOA有什么差异点呢?其本质区别在于设计原理,微服务是去中
转载 2018-11-07 14:01:00
383阅读
2评论
原文地址 http://www.ituring.com.cn/article/125 上周翻译了MartinFowler的贫血模型,当即就答应温老师了温谦老师提出能不能写个示例来解释一下贫血模型的要求。在网上也查了一些资料,本想转载一篇,转念一想,算了吧,按自己的理解去写吧。不论对与错,为大家提供一个靶子,同意也好,反对也罢,希望大家也把自己的见解记录在这里。 在这里再次声明下,本人功力尚浅,
转载 精选 2012-08-11 10:38:43
1280阅读
领域模型  领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了
转载 精选 2015-09-23 18:03:38
523阅读
| 前言 要想深入掌握和了解 DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念——“贫血模型
转载 2022-03-18 17:09:02
242阅读
​ • 贫血模型即事务脚本模式
转载 2022-03-29 11:53:40
165阅读
文章目录前言名词解释案例分析及展开角色:A开发角色:B开发角色:C开发方案1:两边的模型特点都保持方案2:继续拆解一个抽象逻辑存放一些思考案例看法,换位思考最后回到贫血和充血抽象命题附上我之前写的博文入口: 前言最近DDD 面向领域设计 比较火,但DDD的真实案例并不多,我自己对DDD的理解也一直在变,但我感觉要把DDD弄懂,可以先来看看 贫血和充血,不妨先思考这个,或许会有所帮助。名词解释贫血
业务对象是指那些从实际业务场景中抽象出来的对象,这些对象在代码中对应的就是一些业务对象类。 在常见的SSH框架的开发中,一般的做法是将每一个业务对象对应一个POLO,当然这是为了方便使用ORM框架。当我们把业务对象实现为POJO的时候,我们实际上是在使用业务对象贫血模式。下面是业务对象贫血模型图:(
转载 2018-08-08 15:39:00
247阅读
2评论
领域驱动设计,关键是要做领域建模,领域建模的结果叫领域模型。领域模型还有一个名字叫
原创 2023-06-21 15:37:02
151阅读
  贫血模型即事务脚本模式 充血模型即领域模型模式 贫血模型 最早广泛应用源于EJB2,最强盛时期则是由Spring创造,把 “行为”(逻辑、过程) “状态”(数据,对应到语言就是对象成员变量) 分离到不同的对象中: 只有状态的对象就是所谓的“贫血对象”(常称为VO——Value Object) 只有行为的对象就是我们常见的N层结构中的Logic/Service/Mana
转载 2021-07-09 13:33:19
1689阅读
背景 领域模型对象只是用来存储应用的数据。业务逻辑位于服务层中,管理域对象的数据。在服务层中,应用的每个实体对应一个服务类。这种模式大家是不是很熟悉,尤其是在中小项目或者项目刚启动的时候,都是怎么方便怎么来;没错,这就是贫血模型。 一般画风是这样的。 1、Web层:接收用户输入,将数据传至服务层; ...
转载 2021-05-30 00:01:49
169阅读
2评论
贫血模型即是事务脚本模式,充血模型即是领域模型模式。贫血模型最早广泛应用是源自于EJB2,最强盛时期则是由Spring创造,把“行为”(也称为逻辑、过程)和“状态”(可理解为数据,对应到语言就是对象成员变量)分离到不同的对象之中,那个只有状态的对象就是所谓的“贫血对象”(常称为VO——Value
原创 2021-07-06 14:03:17
625阅读
  • 1
  • 2
  • 3
  • 4
  • 5