我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java 中设计模式(值对象)的实例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java 中设计模式(值对象)的实例详解

java 中设计模式(值对象)的实例详解

应用场景:在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设计模式

值对象的本质是“封装数据

具体步骤: 

   1. 所写的类必须实现序列化Serializable(序列化是为了防止数据读取的时候数据丢失)。 同时主要这个类的命名规范。值对象的命名规范: XxxValueObject, XxxVO, XxxModel。

   2. 必须要写一个成员变量Id作为主键。(这个很好理解,你传入的数据姓名啊,地址或者其他可以相同,但是一定要有一个Id作为主键,来区分不同数据)

  3. 必须要写一个空参的构造函数。
    空参构造函数可以用来收集部分数据以及不同地方的数据(比方说你在这个页面用户只填写了姓名和性别信息,在其他地方收集到地址信息,空参很好的收集起来)

  4. 写所有成员变量的set-get方法。用来收集和处理数据。为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)

  5. 推荐覆盖实现equals()、hashCode()和toString()方法

具体实现代码(以传递个人地址数据为例)

import java.io.Serializable;//值对象的命名规范: XxxValueObject, XxxVO, XxxModel//1实现序列化接口public class AddressVO implements Serializable {  private static final long serialVersionUID = 1L;  // 2私有化所有成员变量  private String userId;  private String name;  private int age;  private boolean man; //变量名建议不要取成isMan(JSP碰到这种情况会有bug)  private String address;  // 3 必须要有一个默认的空参构造  public AddressVO() {  }  // 4 写所有成员变量的setter-getter方法---boolean型变量的getter方法写成isXXX()的形式  public String getUserId() {    return userId;  }  public void setUserId(String userId) {    this.userId = userId;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public int getAge() {    return age;  }  public void setAge(int age) {    this.age = age;  }  public boolean isMan() {    return man;  }  public void setMan(boolean man) {    this.man = man;  }  public String getAddress() {    return address;  }  public void setAddress(String address) {    this.address = address;  }  //5 建议写equals,hashCode,toString这几个方法  @Override  public int hashCode() {    final int prime = 31;    int result = 1;    result = prime * result + ((userId == null) ? 0 : userId.hashCode());    return result;  }  @Override  public boolean equals(Object obj) {    if (this == obj)      return true;    if (obj == null)      return false;    if (getClass() != obj.getClass())      return false;    AddressVO other = (AddressVO) obj;    if (userId == null) {      if (other.userId != null)        return false;    } else if (!userId.equals(other.userId))      return false;    return true;  }  @Override  public String toString() {    return "AddressVO [userId=" + userId + ", name=" + name + ", age="        + age + ", man=" + man + ", address=" + address + "]";  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java 中设计模式(值对象)的实例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java 中设计模式(值对象)的实例详解

java 中设计模式(值对象)的实例详解应用场景:在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设计模式值对象的本质是“封装数据具体步骤:
2023-05-31

java 中设计模式(装饰设计模式)的实例详解

java 中设计模式(装饰设计模式)的实例详解应用场景:在不对原有对象类进行修改的基础上,给一个或多个已有的类对象提供增强额外的功能. 我觉得可以从字面理解,装饰,装饰房子。房子可以看成原有的类。等于你把一个已经建好的房子按照自己的想法再装
2023-05-31

java中设计模式(多例)的实例详解

java中设计模式(多例)的实例详解多例:单例设计模式的变形,可以看成是一个缓存池的单例,而缓存池里面可以存多个数据实例代码://单例+缓存---没有控制池大小public class A { //1创建一个单例的池(private即把池
2023-05-31

Java设计模式之建造者模式实例详解

本文实例讲述了Java设计模式之建造者模式。分享给大家供大家参考,具体如下:建造者模式(builder)可以将部件和其组装过程分开.一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节.什
2023-05-31

Java 用反射设置对象的属性值实例详解

Java 用反射设置对象的属性值实例详解/** * 用反射设置对象的属性值 * @param obj 需要設置值的對象 * @param fieldName 需要設置值的屬性 * @param value 需要设置的值 * @return
2023-05-31

Java 抽象类与模板设计模式详解

抽象类抽象类是为了方法覆写而提供的类结构,因为其无法自身直接进行对象实例化操作,所以在实际应用中,抽象类主要目的是进行过程操作使用,当你要使用抽象类进行开发的时候,往往都是在你设计中需要解决类继承问题时所带来的的代码重复处理。普通类是一个完
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录