实例带你理解 JavaBean

本贴最后更新于 2072 天前,其中的信息可能已经斗转星移

v2c166dd0bb6dbe3f87a0b20cb3dabfdb8hd.jpg

在我理解看来,JavaBean 与上文讲的接口有着相似的地方:

  • 用于包装并传递一些特定的数据(如字符串、整数、类等等)

  • 用于实现方法的传递

  • ······

    在我们获取用户上传的的数据时,如果只是用一个个变量去接收的话,就会造成重复代码的书写,并且代码多且繁杂,如果想要在其他地方使用这个变量就会很不好调用;假设需要用户上传的数据较多,每一次调用时都需要进行大量重复代码的书写,极大地影响了我们开发的效率,如果我们有一个可以去接收这些数据的类或者容器就可以实现代码的“高内聚、低耦合”。

这个容器就被称为 JavaBean,JavaBean 里的属性全都使用 private 修饰可以保证只能通过 JavaBean 里的 getter 方法和 setter 方法去设置或者获得类里的属性,当然 settergetter 方法都是由 public 修饰,确保其他地方能正常使用这些属性

JavaBean 的设计规则:
JavaBean 是一个公共类
JavaBean 类具有一个公共无参的构造方法
JavaBean 所有的属性定义为私有
JavaBean 中,需要对每个属性都提供两个公共方法,set 方法和 get 方法
定义 JavaBean 的时候,通常放置在一个命名的包下。

举个栗子

public class UserBean {
    //定义UserBean的私有对象 name和age
    private String name;  //用户名
    private int age;  //用户年龄

    //以下都是JavaBean的set方法和get方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

这是一个简单的 JavaBean 用来存储用户数据,它内置的属性很简单,只有 nameage,也有关于属性的 set 方法和 get 方法

    public static void main(String[] args) {
        UseUserBean useBean = new UseUserBean(); //实例化UseUserBean对象,方便调用run方法
        UserBean user = new UserBean();
        user.setName("zhangsan");
        user.setAge(12);
        useBean.run(user);

        useBean.run2("zhangsan", 12);
    }

    //使用javabean的方式处理数据
    public void run(UserBean user) {
        System.out.println("用户名:" + user.getName() + " 年龄: " + user.getAge());
    }

    //使用普通的变量的方式处理数据
    public void run2(String name, int age){
        System.out.println("用户名:" + name + " 年龄: " + age);
    }

runrun2 的结果是一样的,都可以打印出用户的信息,但是当用户的其他数据比较多时,是不是方法里的参数就变得很多了,并且外部也不好调用。
如果我将用户的数据都封装到一个类里,再通过变量的传递,就可以将这个类里的其他数据流转到其他要使用这些属性的地方,将用户的数据封装到一个容器里,这种操作就降低了代码的耦合性。

使用 javabean 有很多好处,比如

  1. 提高代码的可复用性:对于通用的书屋处理逻辑,数据库操作都可以封装在 Javabean 里,通过调用 javabean 的属性和方法可快速进行程序设计
  2. 程序易于开发维护:实现逻辑的封装,使事物处理和显示互不干扰
  3. 支持分布式运用:多用 javabean,尽量减少 java 代码和 html 的混编
  4. 可以便捷地传递数据

MVC 里有 Mode 模型的概念,就是将数据封装到模型里,这和 JavaBean 的概念是一样的,就是构建好一个模型,然后照着样子将数据放到一个模子里,这就是实例化了一个对象。

总结

关于 JavaBean 的知识还有很多,这里只是简单地介绍 JavaBean,我们会经常在 JavaWeb 开发中用到它。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 代码
    466 引用 • 631 回帖 • 9 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • visus

    你们真 low,别丢人了,hashMap 的 hashCode 重写过吗,又来装逼 🙏 🙏 🙏

  • gaoyangwolf

    看起来很厉害的样子

  • visus

    我错了,话不能乱说,饭可以乱吃,抱歉

  • nimingqi

    不知道怎么回事

  • godboys

    JavaBean 中最好重写 toString 方法

adlered
Java 开发业余爱好者,业余开源爱好者

推荐标签 标签

  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 5 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 20 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 26 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 653 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    153 引用 • 3783 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1057 回帖 • 5 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 334 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 8 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 5 关注
  • 导航

    各种网址链接、内容导航。

    39 引用 • 170 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 41 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 创业

    你比 99% 的人都优秀么?

    84 引用 • 1399 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    179 引用 • 995 回帖 • 1 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    287 引用 • 4484 回帖 • 668 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 74 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 166 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 528 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 2 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 209 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 414 关注