首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 用JavaBean开发基于组件的应用程序
【标  题】:用JavaBean开发基于组件的应用程序
【关键字】:程序,组件,Java,应用,Bean,JavaBean,JavaBean
【来  源】:网络

用JavaBean开发基于组件的应用程序

软件组件技术可以把软件功能作为一个组件来组装成一个应用程序,这就使得开发过程更进了一步。真正的组件是独立于开发语言的,并且可以通过应用程序生成器(application builder)工具来管理它。

在Java中,利用JavaBean技术(它具有Java语言所有的特点,如易用性以及平台无关性)你可以轻松的创建组件。在概述该技术后,让我们看看创建一个简单的JavaBean的过程。


JavaBean是如何工作的


JavaBean技术允许你用Java语言来开发与平台无关的软件组件。Bean(JavaBean是关于组件的术语)是正常的Java类,它可以像其它类那样编程使用。

然而,对于bean来说,类必须遵循某些约定和原则,这样它可以被可视化生成器(builder)工具所使用。通常,bean是继承java.awt.Component类或者它的子类的可视的组件,但这个要求并不是必须的。

编写bean是非常简单的,它并不需要特定类的子类或者实现特定的接口。Bean由一套特性所定义,这些特性在特定场合下“暴露”。这些特性可以归为三类:

性质(Properties)
事件
方法

性质

性质是已命名的属性,它可以被读和(或)写。性质可以用辅助的(accessory)方法来访问,这样你就可以得到或者设置它们的值。该方法必须有按照如下方式命名才可以设置性质的值,其中<type>是性质的类型而<property>是性质的名字:
 
public void set<property>(<type> newValue)

相同的,得到属性值的方法必须为::
 
public <type> get<property>()

假设某个bean有一个名为count、类型为int的性质,那么设置和得到该性质值的方法可以是:
 
public void setCount( int newValue )
public int getCount()

除了性质之外,JavaBean还有可能会用到事件。


事件


如AWT和Swing组件那样,bean必须发出一个事件来向感兴趣的部分通知某个事情发生了。在bean中实现事件比实现性质要稍微多花费一些精力。

首先,你需要定义java.util.EventObject类的一个导出类来封装关于事件的信息。按照惯例,这个类的名字应该是“<event>Event”的形式,其中<event>是事件的名字。

其次,你还需要定义接口;它继承java.util.EventListener类,并在被通知的部分实现。按照惯例,接口名字应该为“<event>Listener”。该接口必须定义一个方法,用来为每一种通知类型的<event>Event类型字符串参数接收字符串参数。

最后,bean必须提供两个方法,其中一个方法是让对象可以把它自己注册到该bean中以便它接收事件通知,如下所示:
 
public synchronized void add<event>Listener(<event>Listener l )

另一个方法用来注销(unregister)它自己:
 
public synchronized void remove<event>Listener(<event>Listener l )

维护感兴趣对象(消息监听者,listeners)的列表是bean的任务。根据JavaBean规范,为了防止多线程应用程序导致的竞争冒险,所有访问监听者列表的代码都应该同步起来。因此同步属性在该方法的定义之中。

 

方法

如同任何正常的Java类那样,bean可以定义方法。与性质和事件不同,这里没有关于方法命名的任何限制,所以任何名字和属性都可以使用。如果方法是公有的,那么它就可以认为是bean的接口组成部分之一。

一个简单的例子


我开发了一个简单的例子来示范上面所给出的概念。这个bean很简单,它按秒进行递减计数,到减到零时,发出一个ActionEvent事件。这个数用标准计时法(h:mm:ss,即时分秒的方式)。它提供了两个性质:

count (整型):秒的计数值,随着事件的流逝,计数值减到零。
running (布尔):指示递减记秒是在运行之中还是已经停止了;把这个性质设置为“真”则开始倒数记秒,否则停止计数。

根据JavaBean规范,为了在计数值溢出后可以通知其它对象,该bean提供了addActionListener和removeActionListener方法。由于我用到了ActionEvent事件,所以我可以利用java.awt.AWTEventMulticaster类来管理事件监听者。

这个bean还提供了start()以及stop()方法来启动和停止倒数记秒器,它的功能和running性质相同。清单A提供了这个bean例子的完整代码。清单A演示了如何用最少的代码创建一个bean,它向你提供了创建复杂bean的一个起点。

Sun Microsystems提供了应用程序生成器的基准(reference)工具(称之为BeanBox),它用于测试bean。它允许你可视化的建立包括bean的表单、设置它们的属性并用事件把它们联系起来。

为了利用BeanBox,这个bean必须在一个jar文件中实现,这样它才可以载入到应用程序生成器中。还有,该bean必须包括在一个清单(manifest)文件中,该文件包括了每一个bean的条目,每个条目有两项:

名字:jar文件中bean类文件的路径。
Java-Bean:一个必须为“真”的布尔值。

这个页面显示了CountDown bean的清单文件。

在包装bean之后,载入jar文件到BeanBox并在表单中放置两个CountDown bean。注意CountDown并没有图标(因为我并没有提供它)。这两个bean的count性质均设置为为非零值,我们来看看反映更新后的bean的直观表示是如何反映值的变化的。在这之后,把这两个CountDown bean连接起来,使得其中一个bean的ActionEvent事件调用另一个bean的start()方法。设置第一个bean的running性质为“真”来看看它是如何启动递减记秒的。当计数值溢出后,它将发出一个ActionEvent事件,该事件将激活另一个bean的start()方法,使得另一个bean也开始技术。图A给出了BeanBox界面的一个画面。


这幅图演示了两个通过ActionEvent事件联系起来的CountDown bean。当其中的一个bean计数溢出后,将启动另一个bean去计数。


设计你自己的bean

JavaBean把 Java语言的强大功能和平台无关性与软件组件技术融合在一起。一旦你学会了JavaBean的基本概念,你就可以开始编写你自己的bean了。

提高Java应用程序属性持久化的方法:【上一篇】
Java发展趋势:走在最前线的脚本语言:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 范型擦拭法即范型类无法获取范型参数信息的原因
  • Delphi 异常处理与程序调试(三)
  • 查看FreeBSD的进程
  • Building NT kernel mode drivers in MS Visual C 6.0
  • Eclipse编程之旅:Shell入门
  • Web页面的数据导出excel时的格式问题
  • 重载 -- Classes and Objects in PHP5
  • 用C# Builder实现文件下载程序
  • 迭代器模式(Iterator Pattern)
  • MySQL 5 on Linux手动安装方法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.