JavaBeans是一种JAVA语言写成的可重用组件,为写成JavaBeans,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans程序模块是指采用JavaBeans的技术来进行程序模块设计,尽可量地对程序代码进行复用。现在很多大型程序中,为了尽可能方便代码修改和功能扩展,一般都是使用JavaBeans程序模块。
中文名:
JavaBeans程序模块
外文名:
JavaBeansProgram module
学科:
计算机科学、软件工程
目的:
代码复用、代码修改
有关术语:
JavaBeans、代码修改
领域:
软件开发
目录
简介
在软件工程,软件程序的设计一般采用模块化设计方法,同时也尽可能实现代码复用。Javabeans程序模块技术恰巧符合这两点,这是使用Javabeans程序模块技术构造软件程序一个重要原因,其中代码复用基于bean是一个可重用的软件构件。代码复用,也被称作软件复用,就是再利用已有的代码,或者相关的知识去编写新的代码来构造软件。不同版本的Javabean程序模块需要的修改较少,因此软件程序使用Javabeans程序模块技术能够较好地实现不同软件版本之间兼容性、减少修改工作量和具有较好的移植性。
JavaBeans
JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。
优点
Bean可以控制它的属性、事件和方法是否暴露给其他程序。
Bean可以接收来自其他对象的事件,也可以产生事件给其他对象。
有软件可用来配置Bean。
Bean的属性可以被序列化,以供日后重用。
JavaBeans体系结构特征
设计模式
JavaBean最重要的特征就是它只是标准化的一个层次。设计模式(即编码约定) 可以使工具和人们识别出一个JavaBean的基本特性,并且加以处理,而无需了解它是如何实现的。可以称Bean是“自描述的”(self-documenting)。通过分析一个Bean,可以指出它能够激活和接收什么事件;也可以掌握其特性 (等价于它的公共变量)和方法。对于Bean特为IDE而设计的性质,它还能够提供有关的显式信息。
反射
反射(Reflection)是Java语言的一个重要特性。基于反射,Java代码则有可能在运行时检查和处理新的Java对象。在JavaBeans领域中,反射允许开发工具分析Bean的功能,还可以检查其字段的值并调用其方法。本质上说,反射使得在运行时汇集在一起的Java对象也可以做任何事情,就好像这些对象是在编译时汇合的一样。即使一个Bean并没有与任何“内置” 文档相绑定,通过使用反射来直接审查该类,我们仍然可以收集到有关其功能和特性的信息。
对象串行化
最后,Java串行化API (Java Serialization API) 使我们可以将一个活动的应用或应用组件“冰冻” (有人更喜欢“腌制(pickle)”这个词),以后再将其复原。这是很重要的一步; 这样就有可能将应用接合起来而无需生成过多的代码。在此不必在启动时定制和编译大量的Java代码来构建应用,而只需将Bean 粘贴在一起,对其进行配置,调整其外观,然后保存就可以了。在此之后,这些Bean还可以恢复,而其状态以及相互连接均可做到原封不动的保留。由此,对于设计过程的考虑就有可能存在各种各样的方法。另外,对于从手写Java代码得到的串行化对象,使用起来也很容易,因此可以任意地将“冰冻”的Bean 与原有的Bean类以及其他Java代码加以混合。在Java 1.4中,增加了一种“长期”对象串行化机制,它可以把JavaBean用一种XML格式来保存,从而能够很好地感知类中所做的修改。
组成部分
属性(properties)
JavaBean提供了高层次的属性概念,属性在JavaBean中不只是传统的面向对象的概念里的属性,它同时还得到了属性读取和属性写入的API的支持。属性值可以通过调用适当的bean方法进行。比如,可能bean有一个名字属性,这个属性的值可能需要调用String getName()方法读取,而写入属性值可能要需要调用void setName(String str)的方法。
每个JavaBean属性通常都应该遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值,对bean进行操作。JavaBean还可以对属性值的改变作出及时的反应。比如一个显示当前时间的JavaBean,如果改变时钟的时区属性,则时钟会立即重画,显示当前指定时区的时间。
方法(method)
JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用。默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集。
由于JavaBean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段(没有public字段)。这样,方法调用是接触Bean的唯一途径。
但是和普通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操作和使用Bean的主要途径。公开Bean方法在Bean操作中降为辅助地位,因为两个高级Bean特性--属性和事件是与Bean交互作用的更好方式。
因此Bean可以提供要让客户使用的public方法,但应当认识到,Bean设计人员希望看到绝大部分Bean的功能反映在属性和事件中,而不是在人工调用和各个方法中。
事件(event)
Bean与其他软件组件交流信息的主要方式是发送和接受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引脚:工程师将引脚连接在一起组成系统,让组件进行通讯。有些引脚用于输入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。
事件为JavaBean组件提供了一种发送通知给其他组件的方法。在AWT事件模型中,一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。
程序模块设计
程序模块(program module)即可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令。 它是大型程序指令的一个组成部分。 在Windows中,术语“模块”一般是指任何能被装入内存中运行的可执行代码和数据的集合。更明确地讲,模块指的就是一个。EXE文件(又称为应用程序模块),或一个动态链接库(DLL — Dynamic Linking Library,又被称为动态链接库模块或DLL模块),或一个设备驱动程序,也可能是一个程序包含的能被另一个程序存取的数据资源。模块一词也被用于特指自包含的一段程序。
模块化是个一般概念,这一概念也适用于软件开发,可以让软件按模块单独开发,各模块通常都用一个标准化的接口来进行通信。实际上,除了规模大小有区别外,面向对象语言中对象之间的关注点分离与模块化的概念基本一致。通常,把系统划分外多个模块有助于将耦合减至最低,让代码维护更加简单。
程序模块设计将一个大程序划分成几个功能相对独立的程序模块,然后再对各模块进行程序设计。只要模块间的接口关系不变,每个模块内部的具体实现细节可随意修改。这种程序设计方法称模块程序设计。对模块程序的要求有:(1)各模块的独立性要强。即在同一模块内的结构要素(语句或数据)之间具有较强的相关性(模块强度高),模块之间的相关性尽量少(耦合度弱)。一旦整个程序实现的任务需作一点变更时,或者要修改某个错误时,只需修改个别模块,不必修改全部程序。(2)选出通用模块,最大限度地利用可利用的模块。(3)各模块的大小要适当,需要细分的模块要细分,小模块能被上层模块吸收的要吸收进去。
这样设计出的模块便具有可修改性、可读性、可检验性。
模块程序设计的优点在于可以把大型程序分解为子模块,便于进行程序设计。模块的相对独立使它们便于共享,提高了程序设计的效率。
目前模块程序已发展为层次模块程序,使模块间又具有层次结构关系,即按照上层模块调用下层模块的原则建立起来的分层结构,因而使设计出来的程序具有较好的结构和可理解性,调试和修改都方便。