999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于授權事件模型實現構件的事件定制

2010-12-31 00:00:00王洪彪,趙世霞
電腦知識與技術 2010年21期

摘要:分析了授權事件模型及JavaBeans構件的組成,詳細描述了基于授權事件模型的Bean定制事件的實現,包括添加Bean事件,定義事件類,定義監聽器接口,監聽器及事件源類的實現,最后編寫實例驗證了構件的正確性。

關鍵詞:構件;授權事件模型;定制事件;事件處理

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)21-5831-03

Basing the Mode of Event-Delegation to Realized the Customizing Event of Component

WANG Hong-biao, ZHAO Shi-xia

(Section of Computer Teaching and Research, Henan Provincial Youth League School, Zhengzhou 450002, China)

Abstract: The article introduces the Event-Delegation pattern of the component and the composition of JavaBeans, and mainly gives a detailed analysis ofthe event model based on the authorization of Bean custom events, including the definition, adding Bean events of events, defining a monitor, monitor and interface of source, finally verified by examples written the correctness of the component.

Key words: component; event-delegation; customize-event; event-process

構件是應用程序可重復使用的部分,使用軟件構件類似像搭積木,能快速構造應用程序,實現功能的一些擴充。JavaBeans是JAVA語言寫成的可重用組件,在JSP中JavaBeans常用來封裝業務邏輯,數據庫操作或執行復雜的計算任務等等,JavaBeans的任務就是“一次性編寫,任何地方執行,任何地方重用”, JavaBeans使用授權事件模型。

1 授權事件模型

JAVA的授權事件模型包含三個概念:事件源,事件,事件監聽器,其中,事件源是產生事件的組件,當這個組件的內部狀態改變時,事件就會產生,一個事件源必須注冊一個事件監聽器已使監聽器能夠可以接受一個特定時間的通知。每一種事件都有它特定的注冊方法;事件是描述了一個事件源的狀態改變的對象,可能通過人機接口的交互產生。如輸入文字,點擊鼠標,也可在定時器中到期而產生,當然用戶也可以自由的定義自己的事件;事件監聽器是實現了事件處理,當事件發生時的時候被通知的對象,它必須有實現與事件對應的監聽接口,并在事件源中注冊且具有實現接受和處理事件通知的方法。圖1為單擊按鈕JButton的授權事件模型的工作過程,其中,JButton按鈕就是事件源,當點擊JButton按鈕后,生成一個用于存放該事件參數的ActionEvent的對象,原先已被告知對該類事件感興趣的偵聽器,調用了ActionListener接口中的actionPerformed()方法,并以事件對象作為實參,處理完成后,把結果交付業務邏輯層。

2 JavaBeans定制事件的實現

事件是由事件對象、事件源、事件監聽處理程序三部分組成。Bean與其他軟件組件交流信息的主要方式是發送和接受事件,當用戶點擊Bean構件內部的某個控件時,可以產生一個事件對象,事件為JavaBeans組件提供了一種發送通知給其他組件的方法,把這個產生事件Bean構件稱為事件源, 事件源就是事件的啟動者,由它觸發一個或多個事件目標,一個事件源可以注冊事件監聽器對象。按照授權事件模型需要把產生的事件以對象形式傳遞給監聽該事件的容器或組件,在事件發生時,事件源不再負責處理所發生的事件,而是將其委托給已注冊的事件監聽器對象調用一個適當的事件處理方法來進行處理。

2.1 添加JavaBeans事件

JavaBeans通過傳遞事件在JavaBeans之間通信,JavaBeans用一個事件告訴另一個JavaBeans采取一個動作或告訴其狀態發生了改變。事件從源聽眾注冊或發表并通過方法調用傳遞到一個或幾個目標聽眾。要為一個JavaBeans組件添加自定義事件的處理,應遵守以下開發步驟:

1)編寫自定義事件對象;

2)編寫自定義事件偵聽器接口;

3)為JavaBeans組件增加注冊,注銷事件監聽器的方法,和事件監聽的通知方法;

4)編寫自定義事件偵聽器的接口的實現類,對自定義事件進行處理;

5)在JavaBeans組件的使用類中,利用JavaBeans組件的注冊方法,將事件監聽器與JavaBeans組件進行關聯。

2.2 事件類

事件類就是定義事件對象的特征,所有的事件類必須繼承Java事件基類java.util.EventObject。EventObject定義了事件類的共有特征,其中,最重要的屬性是Object類型的source,這個屬性指明了事件源。EventObject類提供了getSource()方法來獲取事件源,事件源的設置是由構造方法EventObject(Object source)來實現的。下面舉例說明事件類DemoEvent的定義:

package eventdrivendemo;

import java.util.EventObjiect;// 繼承了事件基類EventObject

public class DemoEvent extends EventObject{

public DemoEvent(Object source){// 事件源的設置

super(source));

}

}

定義了事件類后,產生一個事件,若想引用事件類,可以通過new操作符實例化了DemoEvent類并將其賦值給De,DemoEvent event = new DemoEvent(this)。

2.3 監聽器接口

監聽器接口定義了一個類要成為監聽器必須具備的功能。每種事件類都有自己的監聽器接口,不同事件類的監聽器接口可以很不一樣,但所有的監聽器接口也都必須繼承監聽器接口基類java.util.EventListener, EventListener本身沒有定義任何方法,它只是一個標志接口,用來表明所有繼承自EventListener的接口屬于監聽器接口。

下面舉例說明事件類DemoEvent的監聽接口DemoListener的定義:

package eventdrivendemo;

import java.util.EventListener;//DemoListener接口繼承java.util.EventListener接口

public interface DemoEvent extends EventListener{

public void handleEvent (DemoEvent Event{//定義了一個事件處理方法handleEvent()

}

2.4 監聽器

監聽器是監聽器接口的實現者,提供監聽器接口中定義的所有方法的實現代碼。事件的處理由事件監聽器進行管理,任何事件處理程序首先都需要向事件監聽器注冊,事件監聽器好像是事件的客戶一樣,提供了一種普適的不經過繼承關系而進行通訊的方法。當系統監聽到事件后,就把事件的處理工作委托給事件監聽器來完成。事件監聽器通過分析事件的屬性信息,把事件交給已注冊的相應事件處理器來處理。下面介紹監聽器的實現。

package eventdrivendemo;

public class Mylistener inplements DemoListener{// MyListener是監聽器名稱, 實現了DemoListener接口, 能對DemoEvent事件作出響應

public void handleEvent (DemoEvent Event{//事件處理方法handleEvent()中,監聽器MyListener從入口參數即DemoEvent對象event中獲取了事件源

object eventsource=event.getsource();

system.out.println(eventsource+\"Demoevent事件觸發\");

system.out.println(\"\"+this+“響應\");//在系統標準輸出上顯示兩行文字,說明哪個對象觸發了消息,哪個對象作出了響應

}

}

2.5 事件源類

事件源是Java事件驅動模式的啟動者,只有事件源產生并發出事件,才能啟動監聽器對事件作出響應。作為事件源的類,必需滿足以下條件:

1)事件源必須在內部維護一個已注冊監聽器的列表。當某監聽器注冊時,該監聽器被添加到列表中,而監聽器注銷時,則從列表中刪除;

2)事件源必須提供注冊方法,以允許監聽器注冊為事件的接收者;

3)事件源必須提供注銷方法,以允許監聽器注銷,停止對事件的接收;

4)事件源必須能夠實例化事件類,即產生事件對象;

5)當事件對象被產生后,事件源必須向所有的注冊監聽器廣播該消息。事件的廣播,是通過逐個調用監聽器列表中所有監聽器的事件處理方法來實現的。

下面創建一個Java類并命名為DemoSource,作為DemoEvent事件的事件源,編寫必要的代碼,使其能滿足事件源的上述5個條件,篇幅有限,隱藏了所有的細節代碼,僅列出DemoSource類的框架。

public class DemoSource {

public DemoSource() {...}//DemoEvent事件的事件源

private int value;//// value字段

public int getValue() {...} value的getter方法

public void setValue(int value) {...}// value的setter方法。如果值改變,觸發DemoEvent事件。

private List listenerList = new ArrayList();// 監聽器列表

public void addListener(DemoListener listener) {...}// 監聽器注冊方法

public void removeListener(DemoListener listener) {...}// 監聽器注銷方法

public void broadcast(DemoEvent event) {...}// 事件廣播方法

2.6 編寫實例

public static void main(string[] args){//主類Main的靜態入口方法

DemoSource demoSource1=new Demosource();//產生事件源類DemoSource的一個實例demoSource1

Mylistener mylistener1=new MyListener();//產生監聽器類MyListener的實例myListener1

Mylistener mylistener2=new MyListener();//產生監聽器類MyListener的實例myListener2

demoSource1.addListener(mylistener1);//在demoSource1上注冊myListener1監聽器

demoSource1.addListener(mylistener2);//在demoSource1上注冊myListener2監聽器

demoSource1.setValue(8);//修改demoSource1的value屬性,以觸發DemoEvent事件

測試結果表明:DemoSource類的一個實例觸發了DemoEvent事件,MyListener的兩個實例對事件作出了響應,和期望一致。

3 結束語

運用授權事件模型能實現JavaBeans構件事件高效的傳遞和處理, 它按照事件源~監聽器的事件處理模型處理事件, 事件源發出事件,監聽器捕獲事件并作出響應的過程。在一個事件源產生事件時,系統就可以自動調用該事件監聽器的事件處理方法,將事件對象作為方法的參數傳入,執行該方法就可以完成對事件的處理。

參考文獻:

[1] 徐林林.Java Web 編程從入門到實踐[M].北京:清華大學出版社,2010.

[2] 溫尚書,陳石華,萬欣.Java Web編程入門與實戰[M].北京:人民郵電出版社,2010.

[3] 張興科.JSP動態網站設計項目教程[M].北京:中國人民大學出版社,2010.

[4] 方振宇.Java Web開發從初學到精通[M].北京:電子工業出版社,2010.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国模极品一区二区三区| 欧美色亚洲| 最新国产精品第1页| 亚洲成人手机在线| 香港一级毛片免费看| 五月婷婷丁香综合| 精品国产一区二区三区在线观看| 色婷婷色丁香| 四虎成人精品| 国产一区二区三区在线精品专区| 免费观看无遮挡www的小视频| 国产91丝袜在线播放动漫 | 免费亚洲成人| 日韩精品中文字幕一区三区| 免费无码一区二区| 亚洲国产精品人久久电影| 99久久国产综合精品2023| 日本在线视频免费| 国产经典在线观看一区| 最近最新中文字幕在线第一页| 尤物精品国产福利网站| 这里只有精品国产| WWW丫丫国产成人精品| 国产精品成人一区二区不卡| 国产成人AV大片大片在线播放 | 98超碰在线观看| 日本爱爱精品一区二区| 国产黑丝视频在线观看| 久久综合九九亚洲一区| 国产偷国产偷在线高清| 亚洲色中色| 福利小视频在线播放| 狠狠色香婷婷久久亚洲精品| 欧美日韩精品综合在线一区| 亚洲欧洲一区二区三区| 亚洲天堂免费在线视频| 人妻中文字幕无码久久一区| www亚洲天堂| 免费 国产 无码久久久| 欧美.成人.综合在线| 久久国产高潮流白浆免费观看| 天天摸夜夜操| 亚洲精品无码日韩国产不卡| 91在线高清视频| 四虎精品免费久久| 欧美黄网在线| 国产精品99r8在线观看| 99热这里只有免费国产精品 | 久操中文在线| 在线看国产精品| 91精品视频网站| 为你提供最新久久精品久久综合| 青青久在线视频免费观看| 91色在线观看| 久热中文字幕在线| 日韩毛片基地| 91视频精品| 国产一区二区丝袜高跟鞋| 91午夜福利在线观看| 91久久偷偷做嫩草影院电| 欧美性色综合网| 亚洲精品免费网站| 国产真实乱子伦视频播放| 国产高清无码第一十页在线观看| 国产免费黄| 激情五月婷婷综合网| 欧美日韩国产成人高清视频| 欧美人人干| 国产在线视频自拍| 日韩高清一区 | 国产嫖妓91东北老熟女久久一| 亚洲欧美日韩成人在线| 日韩少妇激情一区二区| 另类重口100页在线播放| 午夜欧美理论2019理论| 欧美日韩精品在线播放| 黑人巨大精品欧美一区二区区| 亚洲 欧美 日韩综合一区| 欧美另类第一页| 在线观看热码亚洲av每日更新| 亚洲成人黄色网址| 真实国产精品vr专区|