自己編寫一個Java監聽器

https://www.cnblogs.com/be-forward-to-help-others/p/5627290.html


1.原理:

  當範圍對象的狀態發生變化的時候,服務器自動調用監聽器對象中的方法。

例如:創建一個“人”類Class Person

人擁有吃的方法public void eat(){},我們的目的就是,在這個人吃之前要提醒他洗手,所以我們就要監聽這個人,不管他在什麼時候吃,我們都要能夠監聽到並且提醒他洗手,通俗點講這個就是監聽器的作用(在吃之前提醒他洗手)。

2.組成:

   2.1Java的時間監聽機制涉及到三個組件:事件源、事件監聽器、事件對象

   2.2當事件源上發生操作時,它會調用事件監聽器的一個方法,並且調用這個方法時,會傳遞事件對象過來

   2.3事件監聽器是由開發人員編寫,開發人員在事件監聽器中,通過事件對象可以拿到事件源,從而對事件源上的操作進行處理

3.實現:

  3.1創建一個人類,人具有跑、吃的方法  (創建一個事件源)

  3.2創建一個接口用來監視人的跑、吃   (事件監聽器)

  3.3創建一個事件對象,裏面用來封裝人(Person)這個對象  (事件對象)

  3.4創建一個測試類,用來測試Java監聽機制

4.×××:http://pan.baidu.com/s/1kUOOoV9

首先創建事件源

複製代碼

//事件源public class Person {    //1.1首先定義一個私有的、空的監聽器對象,用來接收傳遞進來的事件監聽器(相當於一個全局變量)
    private PersonListener listener;    //1.2將傳遞進來的事件監聽器付給1.1中的listener
    public void registerListener(PersonListener personListener){        this.listener=personListener;
    }    //1.3判斷listener是否爲null,如果不爲空,則執行監聽器中的方法,否則照常調用
    public void run(){        if(listener!=null){
            Even even=new Even(this);            this.listener.dorun(even);
        }
        System.out.println("人具有跑的方法");
    }    //1.4和1.3一個道理
    public void eat(){        if(listener!=null){
            Even even=new Even(this);            this.listener.doeat(even);
        }
        System.out.println("人具有吃的方法");
    }
}

複製代碼

創建事件監聽器

複製代碼

//事件監聽器interface PersonListener{    public void dorun(Even even);    public void doeat(Even even);
    
}

複製代碼

創建事件對象

複製代碼

//事件對象class Even{    private Person person;    
    public Even(Person person) {        super();        this.person = person;
    }    public Even() {        super();
    }    public Person getPerson() {        return person;
    }    public void setPerson(Person person) {        this.person = person;
    }
    
}

複製代碼

  *到這步我們已經把一個完整的Java監聽器做完,下一步我們做測試

  注意:要實現監聽,必須調用它所對應的方法例如下面的registerListener,而且必須要實現監聽器接口PersonListener

複製代碼

   = MyPersonListener  "人在跑之前執行的動作" "人在吃之前執行的動作"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章