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 "人在跑之前執行的動作" "人在吃之前執行的動作"