您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > JavaBeans组件模型概念学习
1Java程序设计湖南人文科学院计算机科学技术系2007年上学期主讲:郭广军Tel:13873881089Tel:13873881089EE--mail:mail:gjguohn@sina.comgjguohn@sina.comQQ:583918730QQ:5839187302第14章JavaBeans组件模型333主要内容14.1软件组件模型14.2JavaBean概述14.3JavaBeans的特性14.4JavaBeans的属性14.5API支持14.6JavaBeans的事件处理14.7开发一个JavaBean并打包44414.1软件组件模型软件组件是分离的、可重用的软件部分,可以方便的将其装配以创建各种应用程序,提高了开发效率。JavaBeans技术是一种跨体系结构和平台的API,用于创建动态Java软件组件。软件组件大致可以分为两类:可视化软件组件非可视化软件组件555组件模型还负责提供下列服务自检;事件处理;持久化;布局;应用程序生成器支持;666主要内容14.1软件组件模型14.2JavaBean概述14.3JavaBeans的特性14.4JavaBeans的属性14.5API支持14.6JavaBeans的事件处理14.7开发一个JavaBean并打包77714.2JavaBean概述JavaBean是可以复用的平台中立的软件组件,是一组用于构建可重用组件的Java类库。可以将一组JavaBean装配成应用程序或Applet一个JavaBean由三部分组成:属性、方法和事件外部应用程序或者JavaBean属性accessor方法public方法private方法事件响应图14-1JavaBean的结构888JavaBeans的属性JavaBean的属性,通常是组件对象中的私有数据成员,外界不能够直接访问,需要通过专门的访问(accessor)方法才能访问负责读取的accessor方法称为getter方法,负责写入的accessor方法称为setter方法。publicStringgetName();publicvoidsetName(Stringvalue);999主要内容14.1软件组件模型14.2JavaBean概述14.3JavaBeans的特性14.4JavaBeans的属性14.5API支持14.6JavaBeans的事件处理14.7开发一个JavaBean并打包10101014.3JavaBeans的特性1.内省(Introspection)是组件可以向外界暴露其支持的方法,事件和属性的机制,也是支持在程序构建工具中发现其方法、事件和属性的机制。组件模型通过两种方式支持内省:1)命名模式(DesignPattern),在对Bean的属性,事件,方法等特性命名的时候遵循一定的设计模式,这样,依赖于Java的反射API中的Introspector类就能够识别出Bean的特性。2)BeanInfo类,是一个实现了接口BeanInfo的类,在其中列出了Bean向外界暴露的方法,属性和事件。111111JavaBeans的特性22.属性(Properties)Bean的内部状态、外观和行为特征,在设计时可以改变。程序设计工具可以通过Bean的内省机制来发现。3.定制(Customization)Bean通过发布其属性使其可以在设计时被定制。有两种方式实现定制:属性编辑器和Bean定制器。4.通信(Communication)Beans之间通过事件进行交互,一个Bean通过向另一个Bean注册,能够接受它感兴趣的事件。程序构建工具可以检测到一个Bean可以接受和发送的事件。5.持续(Persistence)使Bean可以存储和恢复其状态。一个Bean的属性被修改后,能够通过对象的持续化机制保存下来,并可以在需要的时候恢复。121212主要内容14.1软件组件模型14.2JavaBean概述14.3JavaBeans的特性14.4JavaBeans的属性14.5API支持14.6JavaBeans的事件处理14.7开发一个JavaBean并打包131313JavaBeans的属性属性的类型分为简单索引绑定限制属性。一个属性可以属于多个类型,例如,限制属性还应为绑定属性。141414(1)简单属性简单属性是指对象内部的简单变量,它表示一个单独的值,并且通过getter方法和setter方法的组合进行读取和设置。用于访问简单属性的命名模式如下:publicTgetN();publicvoidsetN(Tvalue);其中,T是属性的类型,N是属性的名称。如下面的代码:publicStringgetName();publicvoidsetName(Strings)151515(2)索引属性索引属性是用于处理数组及其单个元素的属性,它包含类型相同的元素。可通过整型下标访问这些元素,因此它们成为索引属性。publicTgetN(intindex);publicT[]getN();publicvoidsetN(intindex,Tvalue);publicvoidsetN(Tvalues[]);161616(3)绑定属性绑定属性是在被修改时向其它对象提供通知的属性。绑定属性需要向Bean注册外部监听器,一旦修改绑定属性的值,监听器就会得到通知。具有绑定属性的Bean应支持事件监听器的注册方法,注册监听器的方法采用实现PropertyChangeListener接口的对象作为其唯一参数。publicvoidaddPropertyChangeListener(PropertyChangeListenerl)publicvoidremovePropertyChangeListener(PropertyChangeListenerl)171717(3)绑定属性Bean绑定属性PropertyChangeEventPropertyChangeListenerpropertyChange()注册图14-2绑定属性的工作原理具体见程序181818(4)限制属性1限制属性与绑定属性类似,它们在被修改时都会发出通知。但是与绑定属性不同的是,注册为限制属性监听器的对象可以否决属性的修改。通常限制属性还应为绑定属性。在修改限制属性的值之前,用户必须通过外部监听器检查此值,可以接受或拒绝修改。如果拒绝属性值的修改,则抛出PropertyVetoException异常,包含此属性的Bean将处理异常。任何时候出现异常,Bean都必须将属性的值返回到其原始值;如果没有异常,可为此属性发布属性修改通知。191919(4)限制属性2限制属性的setter方法应支持PropertyVetoException异常。假设有一个限制属性weight,其accessor方法声明如下:publicintgetWeight();publicvoidsetWeight(intweight)throwsjava.beans.PropertyVetoException202020(4)限制属性3将限制属性连接至监听器的方法与绑定属性类似。具有限制属性的Bean必须支持对事件监听器的注册方法,这些方法将VetoableChangeListener对象作为其唯一参数。publicsynchronizedvoidaddVetoableChangeListener(VetoableChangeListenerl);publicsynchronizedvoidremoveVetoableChangeListener(VetoableChangeListenerl);212121(4)限制属性4Bean限制属性PropertyChangeEventVetoableChangeListenervetoableChange()注册图14-3限制属性的工作原理见程序222222主要内容14.1软件组件模型14.2JavaBean概述14.3JavaBeans的特性14.4JavaBeans的属性14.5API支持14.6JavaBeans的事件处理14.7开发一个JavaBean并打包23232314.5API支持JavaBean的API主要是包java.beans中的一些类和接口,可以分为三组:功能类:Beans,PropertyChangeEvent,PropertyEditorManager,Introspector等;描述类:所有的以Descriptor结尾的类。支持类:PropertyChangeSupport,VetoableChangeSupport,PropertyEditorSupport,SimpleBeanInfo等。242424PropertyChangeEventpublicPropertyChangeEvent(Objectsource,StringpropertyName,ObjectoldValue,ObjectnewValue)它的参数为:source,事件源,激发事件的Bean;propertyName,表示修改的属性名称;oldValue,表示属性的旧值;newValue,表示属性的新值;任何时候Bean的绑定属性的修改,都将通过调用方法propertyChange()将PropertyChangeEvent类的实例发送至监听器252525PropertyChangeSupportBean体系结构提供了PropertyChangeSupport类,简化了属性修改事件的激发。要向多个独立的监听器激发事件,只需创建PropertyChangeSupport对象。它的构造函数如下:publicPropertyChangeSupport(ObjectsrcBean)firePropertyChange(PropertyChangeEventevt)addPropertyChangeListener(PropertyChangeListenerlistener)removePropertyChangeListener(PropertyChangeListenerlistener)262626PropertyChangeListenerProperyChangeListener是一个接口。作为绑定属性变化的监听器必须实现此接口。它先向Bean注册,此后对Bean属性的任何修改都将调用监听器的propertyChange()方法,此方法是该接口唯一的方法,定义如下:propertyChange(PropertyChangeEventevt)272727PropertyVetoException任何否决性监听器否决Bean属性的修改,都将抛出PropertyVetoException。它的构造函数如下:PropertyVetoException(Stringmsg,PropertyChangeEventevt)此构造函数有两个参数:msg,不接受Bean属性修改的原因evt,表示属性修改事件该类中唯一的方法是getPropertyChangeEvent(),它返回被否决的属性修改事件282828VetoableChangeSupport提供方法向多个监听器激发事件。它的构造函数如下:publicVetoableChangeSupport(ObjectsourceBean)addVetoableChangeListener(VetoableChangeListenerlistener)fireVetoableChange(PropertyChangeEventevt)throwsPropertyVetoExceptionremoveVetoableChangeListener(VetoableChangeListenerlistener)292929VetoableChangeListene
本文标题:JavaBeans组件模型概念学习
链接地址:https://www.777doc.com/doc-4233624 .html