国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JavaWeb監聽器Listener實例解析

2019-11-26 13:57:09
字體:
來源:轉載
供稿:網友

首先來介紹一下什么是監聽器:

監聽器-就是一個實現待定接口的普通Java程序,此程序專門用于監聽另外一個類的方法調用。
這是使用觀察者模式的。

什么是觀察者模式:
定義對象間一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知自動更新。
示例:
GUI編程中的addXxxxListener都是觀察者模式。
比如為按鈕點擊添加監聽事件,為鍵盤添加監聽等等…

觀察者模式的三個重要類:

被監聽的事件源,也就是我們在使用的對象。
注冊的那個監聽器,是專門用來監聽當前使用的對象的。
事件對象Event也就是被監聽的那個對象!

我們先來看一個簡單版的,自己寫的監聽器。

簡單版:

有事件源,和監聽器,測試類.
Event等下一個完整版實現.
開發步驟:
第一步:實現一個需要被監聽的類Person.
第二步:實現一個監聽接口IPersonRunListener。
第三步:在Person類中,提供一個方法(或者多個,我在這里提供了2個方法)用于注冊IPersonRunListener類,即addBefore和addAfter
第四步:必須要在Person類中維護IPersonRunListener類的實例。
第五步:在調用person.run方法時,判斷IPersonRunListener是否為null,如果不為null則調用它的fighting方法。
第六步:在Demo類中,實例化Person,并注冊一個監聽。

Person:

package cn.hncu.designPattern1;public class Person { private String name; private IPersonRunListener listener1; private IPersonRunListener listener2; public Person(String name) {  super();  this.name = name; } public void run(){  if(listener1!=null){   listener1.fighting();  }  System.out.println(name+"正在跑...");  if(listener2!=null){   listener2.fighting();  } } public void addBefore(IPersonRunListener listener){  this.listener1=listener; } public void addAfter(IPersonRunListener listener){  this.listener2=listener; }}interface IPersonRunListener{ public void fighting();}

Demo

package cn.hncu.designPattern1;public class Demo { public static void main(String[] args) {  Person person = new Person("張三");  IPersonRunListener listener = new IPersonRunListener() {   @Override   public void fighting() {    //這里可以做很多事,不是只能輸出哦    //不過由于還沒寫Event對象,所以拿不到是誰調用的    System.out.println("先做好準備工作...");   }  };  person.addBefore(listener);  A a = new A();  person.addAfter(a);  person.run(); }}class A implements IPersonRunListener{ @Override public void fighting() {  //這里可以做很多事,不是只能輸出哦  //不過由于還沒寫Event對象,所以拿不到是誰調用的  System.out.println("跑完了,休息休息..."); } }

輸出:

完整版

主站蜘蛛池模板: 花垣县| 梧州市| 高安市| 卫辉市| 栖霞市| 河南省| 肃北| 黄大仙区| 县级市| 呈贡县| 沽源县| 海门市| 原平市| 双辽市| 东兴市| 合肥市| 定襄县| 青岛市| 阳曲县| 盐源县| 潞城市| 饶平县| 河间市| 湖南省| 论坛| 福建省| 贺州市| 平果县| 西峡县| 佳木斯市| 五家渠市| 平原县| 庄浪县| 花莲县| 会东县| 宁河县| 仪陇县| 吉木乃县| 杂多县| 龙井市| 探索|