ValueObject 介绍(VO 模式)

值对象(Value Object)详解 值对象(Value Object)是领域驱动设计(Domain-Driven Design, DDD)中的一个重要概念,表示没有唯一标识符的对象。值对象的相等性基于其值而不是身份。这意味着两个值对象如果包含相同的值,则被认为是相等的。值对象通常用于表示不可变的数据结构,如地址、货币、日期等。 阅读详情

这几天一直在接触基于as3的flex框架MVC  里面就用到ValueObject 对象(vo)就介绍一下这东东~~

简单说,ValueObject的值(状态)一旦创建以后就不会改变了。所以可以当基本数据类型用。比如Java中的String, BigDecimal, BigInteger都是ValueObject。StringBuffer就不是。

VO就是DTO,是一种设计模式,主要用于减少数据传送次数,常用在EJB中,现在的Struts项目中也提倡使用这种设计模式,DAO是一种访问数据库的设计模式,大概的思路就是将对一个数据库(和一个数据表)的操作封装到一个类中,由其他的类来调用这个类的方法完成对数据库的操作,这样可以简化负责业务处理的类的复杂性和耦合性

DTO是介于WEB层与EJB层中间的一层,一般采用数据传输对象工厂来满足这种模式的设计需求。DTO    Factory是与具体用例相关的DTO逻辑的唯一驻留点,它可以帮助将客户端与域模型分离。

  • DTO就是数据传输对象(Data Transfer Object)的缩写。

  • DTO模式或称VO模式,是指将数据封装成普通的JavaBeans,在J2EE多个层次之间传输。

  • DTO类似信使,是同步系统中的Message。

  • 该JavaBeans可以是一个数据模型Model。

  • 常见的方式就是为实体对象建立一个Model类,该类只包含这个对象所有字段的getter和setter。例如用户User实体有name, password字段,则建立一个UserModel类,public方法有getName,setName,getPassword,setPassword。这样就可以把UserForm作为参数传给其他函数。

  • Data Transfer Object(DTO)模式是为了解决这样的问题:例如我们的一个实体Bean,其对应的数据库表的字段非常多,那么我们在其Home接口的create方法中以及Enterprise Bean类的ejbCreate方法中的参数可能就会很多,导致我们的这些方法不够elegant。我们可以通过定义一个简单的Java类(实现Serializable接口),其中定义一些属性,并提供相应的get和set方法来解决上面的问题。

    使用ValueObject来封装业务数据,并且有一个单独的方法可以用来获取或者发送这个VO,当客户端请求一些业务数据的时候,服务端就可以产生出一个VO,并且将它赋值,最后,可以用传值的方法传递给客户端。
    这样的好处是减少网络对话,加速层之间的数据交流,我觉得,这样更大的好处是使程序逻辑更加清楚,更加面向对象。写VO的时候,要实现Serializable接口。
    public UserVO implements Serializable {
         private String loginId;
         private String password;
         private String name;
         private String role;
         ... ...
    }

Security Onion的部署(超详细) 本文介绍了开源入侵检测系统securityonion的部署 阅读详情

相关推荐

行车记录仪 - 碰撞检测

功能需求 行车记录仪的核心功能是记录,大部分时候,行车记录仪都是在循环录制视频和音频,而设备的存储空间是有限的,因此录制机制一般是循环覆盖录制,如此一些重要的记录(例如:发生碰撞时的记录)就可能会被覆盖,为了避免这种情况的发生,行车记录仪设备就需要感知这些情况并做特殊处理(例如:备份相应时刻的录像数据)。 实现原理 碰撞检测是通过物理芯片G-sensor来实现的,加速度发生变化时G-sensor驱动会将加速度上报给应用层,应用层做相应处理。 G-sensor G-sensor(Gravity se

qazw9600的专栏 5216

值对象 Value Object

1 理解值对象 讨论值对象,先简单介绍下实体,通俗的理解:实体是由唯一标识和一系列属性构造的类,实体的核心是用唯一标识来定义的,而不是通过属性来定义的。即使属性完全相同也可能是两个不同的对象。实体本身是有状态的,有生命周期,实体本身会提箱相关的业务行为,业务行为会使实体属性或状态发生改变和影响 值对象本身是无状态的,不可变,没有唯一标识,从这个层面上来讲,值对象可以理解为实际的Entity对象的一个属性的结合,该值对象附属在一个实际的实体对象上面。值对象本省不存在一个独立的生命周期,也一般不会产生独立的行为

weixin_40719943的博客 7119

【Pytorch】DCGAN实战(三):二次元动漫头像生成

文章目录1.实现效果2.环境配置2.1Python2.2Pytorch、CUDA2.3Python IDE3.具体实现3.1数据预处理(data.py)(1)导入包(2)定义数据类3.2模型Generator,Discriminator,权重初始化(model.py)(1)导入包(2)Generator(3)Discriminator(4)权重初始化3.3网络训练(net.py)(1)导入包(2)创建类3.4 主函数(main.py)(1)导入文件(2)定义超参数(3)实例化(4)进行训练4.训练过程4.1

qq_44031210的博客 4917

DDD之Value Object(六项特征)

Value Object的六项特征:描述性、不变性、概念整体性、替换性、相等性、无副作用。 特征1: 它度量或描述了领域中的某项概念 特征2: 不变性(Immutability) 一个Value Object在创建后就不能再改变了,不过作为某个物件上的描述性属性,他可以被替换掉。house.color = new Color('Red')(特征4) 特征3: 将相关属性组成一个「概念整体(Conceptual Whole)」 class Product { name: string; .

howeres的博客 1533

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

Simulink单相桥式有源逆变电路仿真:从器件选型到波形分析(MATLAB 2018a实战)

本文基于MATLAB 2018a的Simulink平台,详细演示了单相桥式有源逆变电路的完整仿真流程。从Simscape/Power Systems库的器件选型、参数配置,到触发脉冲设置与电路连接,逐步指导搭建仿真模型。通过调整触发角α,直观展示了电路从整流到有源逆变的工作状态切换,并深入分析了负载电压、电流波形,以及逆变颠覆现象的产生条件与特征。

cake8的博客 1159

AI问答:在后端开发语境中 VO 是什么 / Value Object / 值对象

1.1、封装数据:VO通常包含多个属性,这些属性通常是私有的,并且提供getter和setter方法以便被外界访问。这些属性与VO所表示的概念紧密相关,不包含无关或冗余的属性。1.2、不可变性:VO在创建时就赋予所有属性,并且不提供任何修改属性的方法,这保证了数据的不可变性和完整性。1.3、用途明确:VO主要用于展示层,即Web向模板渲染引擎层传输的对象,无论展示方式是网页、客户端还是APP,只要是让人看到的数据,通常都可以称为VO。

snow的博客 1012

jmeter问题系列:Begin size 0 is not equal to fixed size 5

Begin size 0 is not equal to fixed size 5 ,问题的解决

雨水的早晨的博客 2411

[DDD] ValueObject的一种设计落地及应用

以前在InfoQ看到过这么一个讲座讲座的细节就不赘述了, 其中举例类似“电话号码”, “货币”在业务中的操作, 如果将这类有业务意义的字符串只是简单通过String/Integer等对象传递, 将丢失其业务意义, 最终编码, 测试都变得更繁琐. 同时程序员还需要在业务流程中时刻关心此类对象是否严格符合业务意义, 比如校验格式, 内容有效性等等. 实际工作看过来, 绝大多数人也都是这样做的.

weixin_43558927的博客 1315

STM32F103C8T6驱动DM542步进电机:从CubeMX配置到按键控制的全流程避坑指南

本文详细介绍了如何使用STM32F103C8T6通过CubeMX配置驱动DM542步进电机的全流程,包括PWM频率计算、GPIO模式选择及按键控制实现。重点解决了常见硬件连接错误、PWM参数配置及加减速算法优化,帮助开发者快速搭建稳定的电机控制系统。

weixin_42741930的博客 308

Ubuntu 22.04源码编译安装ROS Noetic

Ubuntu 22.04源码编译安装ROS Noetic

Drknown的博客 2万+

ValueObject 介绍(VO 模式)[转]

简单说,ValueObject的值(状态)一旦创建以后就不会改变了。所以可以当基本数据类型用。比如Java中的String, BigDecimal, BigInteger都是ValueObject。StringBuffer就不是。 VO就是DTO,是一种设计模式,主要用于减少数据传送次数,常用在EJB中,现在的Struts项目中也提倡使用这种设计模式,DAO是一种访问数据库的设计模式,大概的思...

june696295的专栏 374

手把手教你学Simulink——基于Simulink的多轮PMSM同步驱动交叉耦合控制

摘要:本文针对多轮PMSM同步驱动系统的负载不均、参数差异等问题,提出基于Simulink的交叉耦合控制解决方案。通过实时补偿轮间同步误差,实现同步误差<1%、转矩脉动<5%的性能提升。文章详细介绍了系统架构、核心算法(包括PMSM数学模型和偏差耦合控制算法)、Simulink建模步骤及参数设置,并通过仿真验证了稳态和动态性能。同时提供了工程调试建议和完整代码实现,为多轮驱动系统开发提供实用参考。该方案计算量小,可移植性强,适用于电动汽车、AGV等应用场景。

MHD0815的博客 140

xml中的vo是干什么用的

在处理XML数据时,VO对象可以与XML解析库(如DOM、SAX、JAXB等)结合使用,以便从XML文档中读取数据并转换为Java对象。数据格式转换:有时候需要将持久层(如数据库)中的数据转换为应用程序中使用的数据格式,或者将应用程序中的数据转换为其他格式(如XML、JSON等)进行传输。在Java中,VO(Value Object)是一种常见的设计模式,用于表示纯粹的数据对象。通过定义清晰的接口和数据结构,VO 对象可以减少模块之间的直接依赖,从而提高系统的可维护性和可扩展性。

monicateacat的博客 694

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Java】 VO(Value Object)和 DTO(Data Transfer Object)

VO(Money)用于表示一个具体的业务概念,它是不可变的,并且两个相同的 VO 实例在逻辑上是相等的。DTO(OrderDTO)用于封装数据以便于在不同的系统或层之间传输,它可以包含多个属性,并且通常是可变的。在实际的软件设计中,正确地使用 VO 和 DTO 可以帮助我们创建更加清晰、灵活且易于维护的代码。

步子哥的博客 2951

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot第2集:springboot的domain中的vo是什么

在Spring Boot中,VO代表Value Object,通常用于封装返回给客户端的数据,它是一种特殊的DTO(Data Transfer Object)。VO的作用是将业务逻辑处理的结果打包成一个不可修改的对象,以方便数据的传输和处理,它通常只包含少量的属性,也不包含任何业务逻辑。VO常见的用途是作为前端展示数据的模型类,用于在不同层次之间进行数据传递的介质。除了VO,在Spring Boo...

程序员哆啦A梦,蓝胖子 1677

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PO/BO/VO/DTO/POJO/DAO/DO

文章目录DOPOVOBODTOPOJODAOJavaBeanEJBEntity应用程序的分层设计MVC业务分层 DO Domain Object,域对象。就是从现实世界中抽象出来的有形或无形的业务实体。 比如一个商城的项目,商城主要的模块就是用户、订单,商品三大模块,那么这三块数据就可以叫作三个域;再比如一个招聘网站的项目,用户、简历、岗位三大模块,这三块数据就可以叫作三个域。 那么招聘网站的简历是怎么存到数据库的呢,不可能用一张表就能存的,因为简历包含基本信息和工作经验,项目经验,学习经验等。基本信息可以

liaowenxiong的博客 1913

java object剖析_剖析MVC中的各种Object

作者:Flyingis在Web应用和J2EE框架中经常可以碰到各种Object相关的名词,在网上搜索了一下,讨论各种Object术语的帖子一大筐,大的讨论整个框架,小的描述各个层次之间的细微差别,甚至有钻牛角尖之嫌。BlogJava上也有讨论VO和PO的贴子,例如非飞的《各层共享使用PO的代价》等。其实无论怎么讨论,这些术语、分层结构、应用框架无非都是为我们的应用而服务的,因此,我们需要的是理解这...

weixin_35765225的博客 166

软件架构设计:分层架构

分层架构PO、BO、DTO、VO、BO/DO、DAO

qq_41854784的博客 968

从MVC到DDD:一文搞懂Java各种对象模型的应用场景与演进

本文深入探讨了Java对象模型从MVC到DDD的演进历程,详细解析了PO、DTO、VO等不同对象模型的应用场景与转换策略。通过对比贫血模型与富领域模型的差异,结合微服务架构下的CQRS模式,提供了现代Java开发中模型设计的最佳实践与工具链选择,帮助开发者构建更可维护、可扩展的系统架构。

weixin_28730353的博客 367

什么是ValueObject (VO 模式)

什么是ValueObject 简单说,ValueObject的值(状态)一旦创建以后就不会改变了 。所以可以当基本数据类型 用。比如Java 中的String, BigDecimal, BigInteger都是ValueObject。StringBuffer就不是。 VO 就是DTO,是一种 设计模式 ,主要用于减少数据传送次数 ,常用在EJB中,现在的Struts项目中也提倡使用这种...

POWER 1042

DTO、VO、Entity的区别

DTO、VO、Entity的区别

做梦的咸鱼 1万+

DTO和VO的区别及使用场景详解

DTO和VO的区别及使用场景详解

Yeats_Liao的博客 3万+

关于ValueObject和DTO模式的思考

ValueObject和DTO模式是常用的J2EE设计模式,模式所体现的不仅仅是一个设计技巧,更主要的是数据封装的思想。最近我在做设计的时候却对这个模式产生了一些疑问。1.  对于位于持久层中的ValueObject,我是否应该限制他们的使用范围?以Hiberante为例,由于ValueObject的生命周期的特性,我们不能把他们当作DTO在层间传递。但是,如果使用BeanUtils等工具复制一个

风之力——Essential Java 3227
上一篇: 使用DataGrid- Flex分页
下一篇: 创建伸缩和拖拽的flex组件
marshane
博客等级 码龄19年 6粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值