文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中的实体类(entity class)和model

2023-09-23 08:24

关注

一、什么是实体类(entity class)

编写代码时,经常会遇到一些具有“现实”意义的“个体”,eg:一个用户、一首歌曲、一条评论等。它们在逻辑上是完整的整体,具有相似的结构,但是却因为“属性”的不同而不同。

下面看一个典型的Entity class:

//Entity类定义public class UserEntity {    public String name;    public int age;    public String address;}//Entity对象UserEntity john = new UserEntity();john.name = "John";john.age = 20;john.address = "polyu, Hong Kong";

总结:

写实体类的规范:
  1. 根据设计,定义一组需要的private属性。

  1. 根据这些属性,创建它们的setter和getter方法。

  1. 提供带参数的构造器和无参数的构造器。

  1. 重写toString、equals、hashcode等方法(optional)。

  1. 实现序列化(Serializable接口、Parcelable接口也可以),并赋予一个版本号。

下面是一个Entity class的例子:

class Student implements Serializable{  /实现Serializable接口           private static final long serialVersionUID = 1L;     //定义的私有属性     private int id;     private String name;     private int age;     private double score;     //无参数的构造器     public Student(){              }     //有参数的构造器     public Student(int id,String name,int age, double score){         this.id = id;         this.name = name;         this.age = age;         this.score = score;     }     //创建的setter和getter方法     public int getId() {         return id;     }     public void setId(int id) {         this.id = id;     }     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 double getScore() {         return score;     }     public void setScore(double score) {         this.score = score;     }     //由于id对于学生这个类是唯一可以标识的,所以重写了父类中的id的hashCode()和equals()方法。     @Override     public int hashCode() {         final int prime = 31;         int result = 1;         result = prime * result + id;         return result;     }     @Override     public boolean equals(Object obj) {         if (this == obj)             return true;         if (obj == null)             return false;         if (getClass() != obj.getClass())             return false;         Student other = (Student) obj;         if (id != other.id)             return false;         return true;     }      }

二、什么是Model

我们经常见到“Model”,如MVC模式中的M就是指“Model”,MVVM中的“Model-View-ViewModel”,数据库抽象层中的“Model”等。那么什么是model呢?

通常,Model有如下几种用法:

Model是模型,而不是“数据”,Model应该是利用Entity实体,来组合、处理、整合更上层、更抽象数据的类。是基于Entity的更高层的数据抽象与处理。

下面看一个model class:

class UserListModel{    private UserEntity[] users;    //构造函数、初始化用户列表等    UserEntity getUserByName(String name){        //查找...    }    void transformUserAddressFormat{        //转换格式地址    }}

三、entity和model

这两种说法,一般是根据上下文来的,eg:Model是因为有MVC、MVVM这种场景,叫做Model,这里的Model是一种职责。Entity则更接近是一种表达业务概念的实体,eg:一个User、一个Order等等。只是在不同的地方,不同的命名方式罢了。(二者有时候可以混为一谈)


四、实体类要实现序列化和反序列化

有两种方式:1.实现Serializable接口;2.实现Parcelable接口

序列化和反序列化的介绍,请参考下面这篇:

https://blog.csdn.net/SakuraMG/article/details/128654320?spm=1001.2014.3001.5501

Serializable接口和Parcelable接口的介绍,请参考下面这篇文章:

https://blog.csdn.net/SakuraMG/article/details/128672560


部分内容来源于:
http://tutuge.me/2015/03/01/Entity和Model的不同-关于代码的数据层/
https://www.cnblogs.com/echoer/p/4567240.html

来源地址:https://blog.csdn.net/SakuraMG/article/details/128652284

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯