小知识

需要了解的一些名词

1、领域驱动设计(Domain Driven Design,简称 DDD)

2、MVC 三层架构 : M 表示 Model,V 表示 View,C 表示 Controller。
它将整个项目分为三层:展示层、逻辑层、数据层。
现在很多项目前后端分离,后端负责暴露接口给前端调用。将后端项目分为 Repository 层、Service 层、Controller 层。其中,Repository 层负责数据访问,Service 层负责业务逻辑,Controller 层负责暴露接口。

贫血模型

只包含数据,不包含业务逻辑的类,就叫作贫血模型(Anemic Domain Model)。
如下:
UserBo 是一个纯粹的数据结构,只包含数据,不包含任何业务逻辑。业务逻辑集中在 UserService 中。我们通过 UserService 来操作 UserBo。换句话说,Service 层的数据和业务逻辑,被分割为 BO 和 Service 两个类中。

// Service+BO(Business Object) //
public class UserService { private UserRepository userRepository; //通过构造函数或者IOC框架注入 public UserBo getUserById(Long userId) { UserEntity userEntity = userRepository.getUserById(userId); UserBo userBo = [...convert userEntity to userBo...]; return userBo; }
}
public class UserBo {//省略其他属性、get/set/construct方法 private Long id; private String name; private String cellphone;
}

这种贫血模型将数据与操作分离,破坏了面向对象的封装特性,是一种典型的面向过程的编程风格。

充血模型

数据和对应的业务逻辑被封装到同一个类中的类称为充血模型。

【设计模式之美】<Reading Notes>贫血模型与充血模型相关推荐

  1. DDD领域模型、贫血模型、充血模型概念总结

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

  2. 贫血模型与充血模型再讨论

    贫血模式和充血模式 Martin Fowler很早以前就写过一篇文章,题目叫"贫血模型".文章里面批判贫血的领域模型是不够优雅.不够OO的,提倡使用充血的领域模型.在Java世界里 ...

  3. 领域模型、贫血模型、充血模型概念总结

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

  4. 【架构设计】领域模型(概念模型) 、逻辑模型、物理模型、贫血模型、充血模型概念总结【待读与标记】

    本文选自: http://www.jianshu.com/p/fe45506ea358 http://blog.csdn.net/zsy_gemini/article/details/9060105 ...

  5. DDD领域驱动设计 — 贫血模型与充血模型

    文章转载来源:https://juejin.cn/post/6917125801460629518 | 前言  要想深入掌握和了解 DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念-- ...

  6. DDD 领域驱动设计:贫血模型、充血模型的深入解读!

    作者:JavaEdge在掘金 链接:https://juejin.cn/post/6917125801460629518 -     前言     - 要想深入掌握和了解 DDD 领域驱动设计的核心, ...

  7. DDD 领域驱动设计:贫血模型、充血模型的深入解读

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 -     前言 ...

  8. DDD(领域驱动设计)系列主题:失血模型,贫血模型,充血模型和胀血模型详细解读和代码案例说明!

    目录 失血模型,贫血模型,充血模型和胀血模型定义及优点和缺点 失血模型 贫血模型 充血模型 胀血模型 失血模型,贫血模型,充血和胀血代码样例 失血模型代码样例 贫血模型代码样例 充血模型代码样例 DD ...

  9. 贫血模型,充血模型(领域驱动设计)

    很多业务系统都是基于 MVC 三层架构来开发的.虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格. MVC 三层架构中的 M 表 ...

最新文章

  1. 04.微博消息的语言检测
  2. GridSearchCV 与 RandomizedSearchCV 调参
  3. css—盒子模型理解
  4. 小程序使用wx.uploadFile上传图片报错:uploadFile:fail Error: connect ECONNREFUSED
  5. python观察日志(part15)--命名元祖namedtuple
  6. larvel php restful_laravel 实现一个简单的 RESTful API
  7. 以图换字的几种方法及优劣分析
  8. VSTO 3.0 for Office 2007 Programming
  9. 鸿蒙系统首发仪式,鸿蒙系统首发终端荣耀智慧屏正式亮相
  10. 安利一款倒计时插件---雨滴桌面
  11. linux系统内存执行elf的多种方式(内存马)
  12. 巩固大一,大二知识 练习计划
  13. 红米note4 android8.0,红米Note 4首个安卓8.0刷机包放出,开发者:可日常使用
  14. 【华为社招OD笔试题】输入一串数字,给出他们的最小的和的绝对值,输出a,b和a+b的绝对值 其中数字范围为[-63500,63500]
  15. vue3 中使用pinia报错 pinia.mjs:1696 Uncaught Error: []: getActivePinia was called with no active Pinia.
  16. 【外挂逆向】《某涯明月刀》BUFF及技能预判
  17. Java8 :流式数据处理
  18. 主机win10与虚拟机win7相互ping通方法
  19. 自然语言处理简介及研究方向
  20. 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)

热门文章

  1. 一文教你使用java开发一款推箱子游戏
  2. 初级前端工程师笔试技巧总结,祝你顺利拿高分
  3. ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞
  4. CVE-2017-15715漏洞复现
  5. android 重新启动应用程序,通过单击应用程序图标打开Android应用程序时重新启动...
  6. 从零开始的全栈工程师——html篇1
  7. TypeScript中的class声明了什么
  8. C#中结构体定义并转换字节数组
  9. 闲话杂谈—至曾经的自己
  10. 浅谈我所见的CSS命名风格