首页 > 其他分享 >贫血模型和充血模型

贫血模型和充血模型

时间:2022-08-31 17:44:42浏览次数:38  
标签:贫血 对象 模型 充血 面向对象 行为

贫血模型和充血模型

贫血模型 充血模型
事务脚本模式 领域模型模式
只包含属性,get和set 不仅包含属性,还包含业务逻辑
只有状态,没有行为 既有状态,也有行为

贫血模型

贫血模型下领域对象只有所有属性的get/set方式,以及少量简单的属性值转换,不包含任何业务逻辑,不关心对象持久化,只是用来做为数据对象的承载和传递的介质;

优点:结构简单,职责单一,相互隔离性好,使用单例模型提高运行性能;

缺点:对象状态与行为分离,不能直观地描述领域对象。行为的设计主要考虑参数的输入和输出而非行为本身,不太具有面向对象设计的思考方式。行为间关联性较小,更像是面向过程式的方法,可复用性也较小。

注:Spring Boot 采用单例模式,尽量不手动创建对象,对象无状态化,故较推荐使用贫血模型。

充血模型

充血模型下领域对象不仅有属性行为,包含此领域相关的业务逻辑,同时也包含对领域对象的持久化操作。

优点:对象自洽程度很高,表达能力很强,因此非常适合于复杂的企业业务逻辑的实现,以及可复用程度比较高,更符合面向对象设计思想;

后记

贫血模型它完全和面向对象设计背道而驰,是反模式的。

面向对象设计主张将数据和行为绑定在一起,而贫血领域模型则更像是一种面向过程设计;充血模型,则真正的遵守面向对象编程思想,真正的体现软件设计的高内聚,低耦合理念!

面向对象设计的本质是:“一个对象是拥有状态和行为的”。

标签:贫血,对象,模型,充血,面向对象,行为
From: https://www.cnblogs.com/lick468/p/16643992.html

相关文章

  • 模型类序列化器的声明和操作使用
    ModelSerializer与常规的Serializer相同,但额外提供了:·基于模型类自动生成一系列字段·基于模型类自动为Serializer生成validators,比如unique_together·包含默认的cre......
  • 2 计算模型与复杂性类 | 密码协议课程笔记
    1计算模型1:图灵机1.1图灵机的定义图灵机是一个简洁的计算模型。我们可以将图灵机视为拥有一个无限长、可以双向移动的工作带的有限自动机。在初始阶段,工作带开始的几......
  • 【翻译】一个成功的 Git 分支模型
    【翻译】一个成功的Git分支模型在这篇文章中,我将向你们介绍一个开发模型,早在差不多一年前,我已经将这个模型应用于我的多个项目,而事实证明,这个模型是非常成功的。其实这......
  • LIME 模型解释器
    LIME即是LocalInterpretableModel-agnosticExplanations模型解释器,简单来说就是将每个变量的重要性可视化,集成学习xgb等有feature_importances_,还有专门的SHARP,那么LIM......
  • 面向对象分析设计之一--三个模型
    1.对象模型描述系统的静态结构,包括类和对象,它们的属性和操作,以及它们之间的关系。涉及UML图:类图、对象图2.动态模型着重于系统的控制逻辑,考察在任何时候对......
  • 利用Hugging Face中的模型进行句子相似性实践
      HuggingFace是什么?它作为一个GitHub史上增长最快的AI项目,创始人将它的成功归功于弥补了科学与生产之间的鸿沟。什么意思呢?因为现在很多AI研究者写了大量的论文和开源......
  • 机器学习模型中的无意识偏差
    机器学习模型中的无意识偏差您听说过多元化的团队可以创造更好的产品,但您是否看到它以数据驱动的方式得到证明?无意识的偏见影响着我们所有人。我们都在日常生活中做出假......
  • 什么是盒模型,如何进行不同盒模型的切换
    1、什么是盒子模型具备内容(content)、内边距(padding)、边框(border)、外边距(margin)这些属性2、盒模型有两种标准盒模型(W3C标准的盒子模型,大部分浏览器支持)怪异盒模型(......
  • 第四章 网络安全体系与网络安全模型
    1、网络安全体系特征(1)整体性:网络安全体系从全局、长远的角度实现安全保障,网络安全单元按照一定的规则,相互依赖、相互约束、相互作用而形成人机物一体化的网络安全保护......
  • R数据分析:用R建立预测模型
    预测模型在各个领域都越来越火,今天的分享和之前的临床预测模型背景上有些不同,但方法思路上都是一样的,多了解各个领域的方法应用,视野才不会被局限。今天试图再用一个实例给......