贫血模型和充血模型

前言

作为一个java软件开发人员,从开始学习java开始,都一直在说面向对象,但是在日常开发中,一般的开发人员在开发业务的过程中,往往并不是完全的面向对象的,特别是业务流程,有时候其实是面向过程的一种开发模式。
一般的流程式开发,都是按照流程一步步进行开发,针对接口进行按部就班的开发,并不是说这种方式完全不可取,而且对于正常的思维逻辑来说,这样的方式更加有利于代码的阅读和理解,特别是某个功能点,但是当业务模块越来越庞大,有些问题就会慢慢的暴露出来,比如在电商场景下,判断库存问题,一般的做法是抽出一个公共的方法供其他地方使用,但是往往多人开发的情况下,容易多个这样的方法,每个开发人员自己涉及的地方统一调用,这样就对后续的维护产生了很多影响。
面向对象的开发模式,会创建一个实体,在该实体内会有各种各样的接口,就比如库存判断,就可能放在商品实体内进行判断等等。
这里就引入了贫血模型和充血模型的概念。

贫血模型

贫血模型最早广泛应用是源自于EJB2,把“行为”(可以理解为逻辑、过程)和“状态”(可以理解为数据,即成员变量)分离到不同的对象中,只有状态的对象即为“贫血对象”(常被称为vo--value object)。
缺点:数据和操作的分离,导致了数据更加不可控,任何人都可以随意操作数据。缺乏可控性和安全性
优点:符合大多数开发人员的开发习惯。状态对象职责简单,在领域设计并不完善时,不会导致代码混乱。在业务简单的情况下,能够很快速的开发而且不会造成过度设计。

充血模型

充血模型,就是面向对象设计的本质:“一个对象是拥有状态和行为的”,比如说一个人自己就可以跑,可以跳,没有必要有一个manager去操作人去跑去跳。就是一个完整的对象。
缺点:设计上面存在难度,需要比较完备的思考去设计。某种程度上,在现有开发人员的思维来说比较难理解。在简单的业务下,这样的设计势必导致开发时间的延长,过度的设计导致本来简单的项目异常臃肿。
优点:面向对象的设计,使得数据更加安全,对象功能更加完备,后续维护成本降低。

后记

之后会针对DDD根据自己的理解进行讲述。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是基于贫血模型的传统开发模式? 对于大部分的后端开发工程师来说,MVC 三层架构都不会陌生。它将整个项目分为三...
    技术灭霸阅读 1,471评论 2 2
  • 简述: 一、贫血模型 所谓贫血模型,是指Model 中,仅包含状态(属性),不包含行为(方法),采用这种设计时,需...
    rushui阅读 3,782评论 2 0
  • 本文系转载,后半段领域模型有点不懂了。。。有空细细磨 Martin Fowler很早以前就写过一篇文章,题目叫”贫...
    盗梦49阅读 18,090评论 0 4
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,755评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,752评论 0 11

友情链接更多精彩内容