当前位置:主页 > java教程 > java 中设计模式(值对象)的实例详解

java中设计模式的实例用法

发布:2019-11-19 15:11:58 116


给大家整理一篇相关的编程文章,网友步煜祺根据主题投稿了本篇教程内容,涉及到java、设计模式、值对象、java 中设计模式(值对象)的实例详解相关内容,已被912网友关注,涉猎到的知识点内容可以在下方电子书获得。

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 + "]";
  }


}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


参考资料

相关文章

  • 总结Java中String.format()的使用

    发布:2020-03-01

    这篇文章主要给大家介绍了如何快速入门介绍Java中强大的String.format()的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着


  • Java AQS(AbstractQueuedSynchronizer)源码解析

    发布:2023-04-09

    AbstractQueuedSynchronizer被称为队列同步器,简称为大家熟知的AQS,这个类可以称作concurrent包的基础。本文将通过剖析源码来看看AQS是如何工作的,感兴趣的可以了解一下


  • 阿里巴巴Java开发规范手册

    发布:2020-02-04

    这篇文章主要介绍了JAVA开发中的一些规范讲解(阿里巴巴Java开发规范手册),需要的朋友可以参考下


  • Java实现手写线程池实例并测试详解

    发布:2023-03-28

    这篇文章主要来模拟一下线程池和工作队列的流程,以及编写代码和测试类进行测试。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下


  • Java实现的矩阵乘法实例代码

    发布:2019-08-29

    这篇文章主要介绍了Java实现的矩阵乘法,简单描述了矩阵乘法的原理,并结合实例形式分析了java实现矩阵乘法的相关操作技巧,需要的朋友可以参考下


  • Java整合mybatis实现过滤数据

    发布:2023-03-07

    这篇文章主要介绍了Java整合mybatis实现过滤数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧


  • java客房管理系统实例代码

    发布:2020-01-21

    这篇文章主要为大家详细介绍了java实现客房管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Java AQS中ReentrantReadWriteLock读写锁的使用

    发布:2023-04-16

    ReentrantReadWriteLock称为读写锁,它提供一个读锁,支持多个线程共享同一把锁。这篇文章主要讲解一下ReentrantReadWriteLock的使用和应用场景,感兴趣的可以了解一下


网友讨论