领域模型(domain model)&贫血模型(anaemic domain model)&充血模型(rich domain model)

简介: 领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。贫血模型是指使用的领域对象中只有setter和getter方法(POJO),所有的业务逻辑都不包含在领域对象中而是放在业务逻辑层。

领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。

贫血模型是指使用的领域对象中只有setter和getter方法(POJO),所有的业务逻辑都不包含在领域对象中而是放在业务逻辑层。有人将我们这里说的贫血模型进一步划分成失血模型(领域对象完全没有业务逻辑)和贫血模型(领域对象有少量的业务逻辑),就不对此加以区分了。

充血模型将大多数业务逻辑和持久化放在领域对象中,业务逻辑(业务门面)只是完成对业务逻辑的封装、事务和权限等的处理。

下面两张图分别展示了贫血模型和充血模型的分层架构。

充血模型

贫血模型下组织领域逻辑通常使用事务脚本模式,让每个过程对应用户可能要做的一个动作,每个动作由一个过程来驱动。也就是说在设计业务逻辑接口的时候,每个方法对应着用户的一个操作,这种模式有以下几个特点: 

- 它是一个大多数开发者都能够理解的简单过程模型(适合国内的绝大多数开发者)。

- 它能够与一个使用行数据入口或表数据入口的简单数据访问层很好的协作。

- 事务边界的显而易见,一个事务开始于脚本的开始,终止于脚本的结束,很容易通过代理(或切面)实现声明式事务。然而,事务脚本模式的缺点也是很多的,随着领域逻辑复杂性的增加,系统的复杂性将迅速增加,程序结构将变得极度混乱。开

 

目录
相关文章
|
缓存 Java Maven
IDEA配置maven和踩坑记录(Unable to import maven project)
IDEA配置maven和踩坑记录(Unable to import maven project)
2191 0
|
7月前
|
人工智能 监控 安全
拔俗AI集成化管控平台:让智能应用“管得住、跑得稳”的技术底座
AI集成化管控平台是支撑AI规模化落地的“幕后基建”,涵盖资源调度、服务编排与全链路治理三大核心层,实现模型统一管理、服务标准化输出与系统稳定可控,助力企业构建高效、安全、可追溯的AI应用体系。
380 1
|
运维 算法 数据管理
2025有哪些好用的电话系统推荐?(详解电话系统4大核心功能)
电话系统基于CTI和云计算技术,集成了电话、在线客服、短信等多媒体通讯方式,提供高效、多元化的沟通渠道。其核心功能包括高效呼叫、对接集成、智能化服务和数据管理。
786 12
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI具身智能机器人开发套件及实训方案
该产品套件创新性地融合了先进大模型技术、深度相机与多轴协作机械臂技术,构建了一个功能强大、灵活易用的人机协作解决方案。其核心在于将智能决策、精准感知与高效执行完美结合,为高校实训领域的发展注入新动力。
1162 10
|
敏捷开发 数据可视化 API
6款高效的任务看板管理工具,哪款能提升团队协作效率
本文对比了六款流行的任务看板管理工具:板栗看板、Trello、Asana、Monday.com、ClickUp 和 Jira。从功能、易用性、价格等方面进行了详细分析,帮助用户根据团队规模、项目复杂度及预算选择最适合的任务管理工具。
6款高效的任务看板管理工具,哪款能提升团队协作效率
|
机器学习/深度学习 存储 算法
【博士每天一篇文献-综述】2024最新联邦遗忘综述:Federated unlearning A survey on methods, design guidelines
本文提供了联邦遗忘(Federated Unlearning, FU)领域的全面综述,包括背景概念、动机、挑战、设计指南、评估指标体系,并探讨了FU在隐私保护和安全性方面的应用,以及面临的技术挑战和未来研究方向。
1214 5
|
数据采集 存储 自然语言处理
基于Python的微博热点李佳琦忒网友话题的评论采集和情感分析的方法,利用情感分析技术对评论进行情感倾向性判断
本文介绍了一种基于Python的方法,用于采集微博热点话题下的评论数据,并运用情感分析技术对这些评论进行情感倾向性判断,进而通过统计分析和可视化技术展示网友对特定话题的情感态度,对品牌或个人形象管理、用户需求发现、舆情监测和危机管理等方面具有重要价值。
583 2
基于Python的微博热点李佳琦忒网友话题的评论采集和情感分析的方法,利用情感分析技术对评论进行情感倾向性判断
|
Kubernetes Java 数据库
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
460 1
|
Unix Linux 数据处理
Linux命令stty详解
`stty`是Linux命令,用于设置和查看终端参数,如波特率、字符处理和控制字符。它直接与终端驱动交互,支持多种选项以适应不同的配置需求。例如,`stty -a`显示当前设置,`stty -echo`关闭回显,`stty 115200 cs8`调整波特率和字符大小。注意修改设置可能影响终端行为,建议先备份(`stty -g`)并谨慎操作。查阅手册页以获取详细信息。