Sun公司对JavaBean的定义为:可以重复利用的软件组件,它在遵循JavaBean技术规范的基础上提供特定的功能,这些功能模块可以组成更大规模的应用系统。

到底什么是JavaBean?

先看一段代码:

/** * @author yong * */ public class Add { public static void main(String[] args) { int a = 10; int b = 20; int c; c = a + b; System.out.println("a+b=" + c); } }

上面的代码很简单,它的功能就是求出a,b的和并且输出。

但是从软件工程的角度来看,上面的代码有一下几点不足:

可定制性差,如果现在要求其他的两个数相加那么就必须修改程序代码重新给a,b赋值才能完成新的需求。

可维护性差,整段代码相互紧扣,如果得不到用户想要的结果那么就不得不从头到尾进行检查。类似于上面的代码还是很简单的,但是如果一个大型的系统写成上面那样,如果出了问题调试起来就非常费劲了。

复用性差,如果系统的不止一个地方需要用到上面代码的功能那么就不得不在整个代码中写两边几乎完全一样的代码。

上面的这些问题随着系统的增大而越发的明显,从而上面的代码的价值也会随着系统的增大而变得越来越小。

于是JavaBean技术出现了,简单的说JavaBean就是普通的java类,和其他的普通类的区别就在于在遵循JavaBean规范的前提下对一些功能进行封装,并对外界提供可以调用的方法接口,从而可以提高代码的复用性,而且如果程序出问题可以很容易的把错误定位在某个模块使程序的调试、开发的效率提高,同时也方便了合作开发,你一个Bean我一个Bean各不干扰。

改造后的代码:

/** * @author yong * */ public class AddBean { private int a; private int b; //求a,b两个数的和 public int add(int a,int b){ return a+b; } //打印a,b两个数的和 public void print(){ System.out.println("a+b="+(a+b)); } //获取a的值 public int getA(){ return a; } //给a赋值 public void setA(int a){ this.a=a; } //获取b的值 public int getB(){ return b; } //给b赋值 public void setB(int b){ this.b=b; } }

上面的这个类就是一个简单的JavaBean

如此看来JavaBean和vb6.0当中我们把相似的代码提出来构成一个过程的思路异曲同工,甚至可以说JavaBean和微软的com组件是一个作用的,都是封装代码然后供其他的代码调用,从而方便开发。

调用代码:

/** * @author yong * */ public class Test { public static void main(String[] args){ //新建addbean对象 AddBean add=new AddBean(); //设置a,b的值 add.setA(10); add.setB(20); //调用AddBean的方法打印a,b的和 add.print(); } }

JavaBean的种类

JavaBean大体可以分两类:第一类是可视化的,第二类是非可视化的

可视化JavaBean就是就是带有界面的java类,如按钮,文本框等等类似于VB当中的控件。只不过一般情况下在java中我们没有像VB中那样对控件进行拖拖拽拽,但是有些IDE可以实现和VB类似的功能例如JBuilder或者eclipse里面的Swing/Matisse插件等。

非可视化的JavaBean就是没有界面的的java类,例如上面的那段实现a,b求和并输出的类就是一个非可视化的JavaBean。这些JavaBean把功能进行封装方便其他的类的调用所以在web开发当中用到的JavaBean大多是非可视化的JavaBean。

JavaBean的编码规则

JavaBean的编码规范在sun公司的网站上可以下载到(官网下载的速度有限,现在已将文档上传到我的文档中,需要的童鞋可以去下载),100多页的英文PDF文档相当磨练人的耐心,在这里总结如下几条。

1、每个属性必须有对应的属性获取和设置方法,即每个属性必须要提供相对应的个getter和setter方法。

2、如果一个属性的类型为boolean类型,则属性对应的获取和设置方法就有所不同,例如某个boolean类型的属性名为isLuck那么相对应的属性获取方法为isLuck()属性设置方法为setLuck()。

3、所有属性最好是私有变量,即各个类的属性最好设置为private,对属性的取值和赋值操作要通过对应的取值赋值方法进行

4、所有的方法要设置为共有方法,即所有方法要设这为public

以上总结的几条就是编写非可视化JavaBean需要遵循的编码规范,只有这样别的开发者才能方便的调用JavaBean中提供的功能方法。

为什么属性都要设置成私有,方法都要设置成共有呢?

转载于:https://www.cnblogs.com/beijiguangyong/archive/2012/02/24/2371003.html

咖啡豆(JavaBean)•香相关推荐

  1. java web入门经典 pdf_Java Web入门经典 (王国辉陈英) PDF

    资源名称:Java Web入门经典 (王国辉,陈英) PDF 第一篇 起步篇 第1章 开启jave web之门 2 第2章 不可不知的客户端应用技术 12 第3章 驾驭Java web开发环境 53 ...

  2. 【Java】不会真的有人还不知道JavaBean是咖啡豆吧

    咖啡豆!!! 如果有人问我JavaBean是什么,我可以很自信的告诉他: Java是咖啡,Bean是豆子,JavaBean就是咖啡豆 好吧,上面是在开玩笑,JavaBean翻译过来就是: 对象;组件; ...

  3. unity天空盒渐变_「是日美好事物」野兽派带来“金色眼泪”治愈新香,LV耳机印上蓝色天空...

    记者 | 龚婧徽 编辑 | 楼婍沁 野兽派带来"金色眼泪"全新香氛系列 也许在人类共情的特殊时刻,大家对于色彩的感知比往常更为敏锐且心照不宣.日前潘通发布了2021年度代表色,其中 ...

  4. 新品周刊 | 雀巢推出感CAFÉ鎏光咖啡;联合利华联合汉堡王推出真香植物基皇堡...

    寿全斋.雀巢.咖世家咖啡.瑞士莲.绝对伏特加.督威.联合利华.绿客门发布新品. 食品饮料 寿全斋"小暖瓶"姜茶 百年老字号寿全斋推出首款直饮装350毫升"小暖瓶" ...

  5. 你是胡萝卜,是鸡蛋,还是咖啡豆

                                     你是胡萝卜,是鸡蛋,还是咖啡豆 一个女儿对父亲抱怨她的生活,抱怨事事都那么艰难.她不知该如何应付生活,想要自暴自弃了.她已厌倦抗争和奋 ...

  6. 面对逆境:你是胡萝卜、鸡蛋还是咖啡豆

    面对逆境:你是胡萝卜.鸡蛋还是咖啡豆 一个女儿对父亲抱怨她的生活,抱怨事事都那么艰难.她不知该如何应付生活,想要自暴自弃了.她已厌倦抗争和奋斗,好象一个问题刚解决,新的问题就又出现了. 她的父亲是位厨 ...

  7. 你是胡萝卜,是鸡蛋,还是咖啡豆?

    女儿对父亲抱怨她的生活,抱怨事事都那么艰难.她不知该如何应付生活,想要自暴自弃了.她已厌倦抗争和奋斗,好像一个问题刚解决,新的问题就又出现了.?她的父亲是位厨师,他把她带进厨房.他先往三只锅里倒入一些 ...

  8. JavaSSM笔记(一)Spring基础(JavaBean)(IoC理论)(AOP)(使用注解开发)

    在JavaWeb阶段,我们已经学习了如何使用Java进行Web应用程序开发,我们现在已经具有搭建Web网站的能力,但是,我们在开发的过程中,发现存在诸多的不便,在最后的图书管理系统编程实战中,我们发现 ...

  9. 你看这颗咖啡豆。”她纤细的手指拈起一枚褐色的豆子

    拿铁咖啡(new) 牛奶的香甜和咖啡的苦涩,那场偶然的相遇,究竟是甜是苦--又或者两者相等?又有谁能一眼看到杯底,或者结局? 大学的时候,李君莫曾经和朋友在操场上一圈圈的逛,然后笑着说"将来 ...

最新文章

  1. PHP将英文数字转换为阿拉伯数字 
  2. C语言实验——矩阵转置_JAVA
  3. Cisco无线AP上联口为trunk时无法注册故障处理
  4. JZOJ 4307. 【NOIP2015模拟11.3晚】喝喝喝
  5. BZOJ2597 WC2007剪刀石头布(费用流)
  6. 厉害了!VMware ESXi安装记录,附下载
  7. mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》
  8. 如何优雅的抢占别人的显卡?
  9. sql server 中join 查詢中on後面 加case的用法.
  10. java8 metaspacesize_java-8 – Java8 MetaspaceSize标志不起作用
  11. error:LNK2005 已经在*.obj中定义
  12. Python安装包下载、环境配置与工具包安装教程(详细版)
  13. 跟随鼠标移动-demo
  14. python编程心得体会800字_学习python的心得体会
  15. 单独的html怎么实现微信分享,html静态页面实现微信分享思路
  16. 【文献阅读】基于深层语言模型的古汉语知识表示及自动断句研究
  17. iOS读取通讯录功能
  18. 736. Lisp 语法解析 : DFS 模拟题
  19. C语言编程 - 清空键盘缓冲区
  20. ARM汇编指令—CPSR访问指令(mrsmsr)

热门文章

  1. javascript --- 混入
  2. 需求分析挑战之旅(疯狂的订餐系统)(8)——最后的疯狂
  3. Liunx 中tr的用法
  4. 《TOGAF 9.1IT企业架构》什么是企业IT架构
  5. 修改 jquery.validate.js 支持非form标签
  6. 深入mysql慢查询设置的详解
  7. CentOS6.3中挂载NTFS移动硬盘的经历
  8. Java图片处理(二)图片加水印
  9. Java集合框架(3)
  10. 数据库随机取n条记录