根据应用剪裁JavaBeans(1)
· 摘 要
对于可定制的组件(Components),开发者可以根据自己的需要剪裁。可定制的JavaBeans中有应用程序开发者可以修改的属性(Properties)──例如,改变Beans的外观和/或动作。本文将介绍如何定制JavaBeans。我们将讨论属性、读取器(getter)和设置器(setter)方法(Mothods),绑定(Bound)和约束(Constrained)属性,以及使定制简单化的设计模板(Design Pattern)。然后介绍属性编辑器(Editors)和定制器(Customizers),最后我们在一个已有的JavaBeans中增加定制功能。
可定制的组件有更大的应用范围。例如,对于一个电子表格(Spreadsheets)Bean,假如它必须占满全屏幕、与你的应用程序颜色方案冲突或者只能以16进制方式显示数据,不管它在其他方面的功能有多出色,你恐怕不能用它。
JavaBeans规范对简单情况提供了非常简单的识别、修改属性的特征,对复杂的情况提供了扩展。
本文将研究JavaBeans的定制接口、组件属性、以及如何编写你的Beans使得集成开发环境(IDEs)可以将这些属性显示给应用程序开发者。我们还将讨论以下的问题:绑定和约束属性,它们可以方便Beans之间通信和维持一致性;定制器,它可以使我们更方便地定制;BeanBox的使用,它是Sun免费提供的JavaBeans测试工具。
· 什么是定制
软件组件是通用的功能和数据模块,它可以在很多情况下使用,软件组件的定制是很重要的,假如应用程序开发者可以控制其外观和行为,它才能在很多应用程序中得到应用。例如,假如一个按钮类的文本标签总是“Button”,与之相关的动作总是重启计算机(虽然在一些操作系统中这可能是最有用的工具之一)的话,那它是没有多大用处的。
简单的组件,如按钮都有很多开发者可以控制的属性,其中包括:
是否使能
动作
背景颜色
文本颜色
大小
位置
外形
标签文本
当按此按钮时播放的声音文件
复杂的组件需要更多的定制。定制一个远程数据库连接可能从可用的服务器列表中进行选择(信息只有在运行时才可用)、选择协议(同上)、指定用户名和密码和设置通过防火墙访问。
· Beans 的属性
一般说来,定制就是配置Beans的内部状态,使其外观和行为适合所用的环境。这些内部状态(颜色、大小和密码字符串等)在JavaBeans规范里称为属性。Beans中的属性可以用称为访问器(Accessors)的方法读取和修改。一个访问器方法是读取属性值的getter方法,或者是修改属性值的setter方法。在按钮Beans中有String getLabel()方法,它返回Beans的当前标签,有void setLabel(StringnewLabel)方法,它设置Beans的当前标签,只有getter方法的属性是只读的。
为什么不简单地访问Beans内部地数据成员,直接读取和修改它们,而是编写一些访问器呢?因为不能保证属性和Beans内部的成员数据直接对应。例如,Beans中的标签属性可能是一个AWT标签对象,但是也可能不是。标签文本可能来自数据库,可能是另一个Bean的标签,也可能当需要时形成一个标签。访问器方法是Beans中属性的统一接口,它隐藏了属性的实现细节。这是好的面向对象编程惯例,因为它减小了对象间的依靠和“耦合”。