专栏首页软件开发-青出于蓝架构设计的"贫血模型"与"充血模型" 原

架构设计的"贫血模型"与"充血模型" 原

    以前就听别人说过这俩种模型。它们描述的对象是面向对象设计中的实体,构建领域模型(Domain model)时,贫血模型与充血模型给出了俩种不同的方案:

贫血模型:是指领域对象里只有get和set方法,或者包含少量的其它方法,与之有关的业务逻辑都不放在该类中,而是放在其它地方,比如Business logic层。

充血模型:充血模型与之不同,不仅有get/set方法,还有业务逻辑也在领域模型(Domain model)里面,Business Logic只是简单封装部分业务逻辑以及控制流程。

贫血模型的好处:

    每个贫血对象职责单一(体现在哪:每个对象几乎只有属性,get/set方法,无业务逻辑),这样模块间、对象间解耦程度很高。

贫血模型的坏处:

    对象状态和行为分离(贫血模型中,对象只有属性,get/set方法,业务逻辑在不在对象类内部),所以一个完整的业务逻辑描述不能在一个类中完成,而是一组相互协作的类共同完成的。可复用的颗粒度比较小,代码量膨胀很厉害,很重要的一点是业务逻辑的描述能力较差,一个稍微复杂的业务逻辑,就需要太多类和太多代码去表达。由于我公司项目里使用的就是这种模型,所以对此很有感触。

    该模型的缺点是不够面向对象,领域对象只是保存转态或者传递状态使用(想象一下项目里面从web层传到service层,再传到dao层),只有数据没有行为的对象不是真正的对象。

充血模型的好处:

    对象自治度很高,表达能力强,适合于复杂的企业业务逻辑实现,可复用程度高。

充血模型的坏处:

    对象自治度高的结果就是不利于大规模团队分工协作。    

参考:

https://www.cnblogs.com/longshiyVip/p/5205451.html

盒马资深技术专家辉子:领域驱动设计、实践经验:https://www.jianshu.com/p/981cd8b5e3b1

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kubernates之ingress方式部署springboot

        我们将这个springboot部署到k8s上,制作镜像就不描述了,k8s的yaml文件如下,之后执行"kubectl  apply  -f  k8s-d...

    克虏伯
  • Spring-security-oauth2之DaoAuthenticationProvider

        Spring-security-oauth2的版本是2.3.5.RELEASE

    克虏伯
  • sofa-rpc负载均衡之一致性Hash算法分析(ConsistentHash)

    一致性Hash和有权重的轮询是较为复杂的。不仅sofa-rpc中有,dubbo中也有,不过dubbo中实现的更复杂。

    克虏伯
  • 一起玩转微服务(5)——分层架构

    领域驱动设计DDD(Domain Driven Design)提出了从业务设计到代码实现一致性的要求,不再对分析模型和实现模型进行区分。也就是说从代码的结构中我...

    cloudskyme
  • 谷歌推出新模型「pQRNN」,少量参数下进行文本分类,性能堪比BERT

    深层神经网络的快速发展在过去的十年中彻底改变了自然语言处理(NLP)领域 。同时,诸如保护用户隐私、消除网络延迟、启用离线功能以及降低运营成本等问题,迅速推动了...

    新智元
  • Mysql 8 重要新特性 - CTE 通用表表达式

    dys
  • 深度学习的主要应用举例

    参考资料 ? 最喜欢圆,尤其如此灵动 今天简单说一下 Deep Leaning 在各领域应用的几个例子,可以轻松地看一下它是怎么用在 Computer Visi...

    杨熹
  • 机器学习与情绪交易(附代码)

    如果一个结合了不同情绪信号的机器学习模型可以创建一种有利可图的策略会是怎么样呢?

    量化投资与机器学习微信公众号
  • react16常见api以及原理剖析

    React 与 Vue 有很多相似之处,React 和 Vue 都是非常优秀的框架,它们之间的相似之处多过不同之处,并且它们大部分最棒的功能是相通的:如他们都是...

    前端迷
  • 汤道生:产业互联网时代,安全成为CEO的一把手工程

    ? “产业互联网时代的安全不再只是CTO、CIO们的工作范畴,也需要CEO的战略关注,成为CEO的一把手工程。”在7月30日召开的第五届互联网安全领袖峰会(C...

    腾讯安全

扫码关注云+社区

领取腾讯云代金券