Look at the project code encountered a lot of event monitoring mechanism related code. Now Learn:
The Java event mechanism consists of three parts: events, event listeners, and event sources.
1. Event: Inherited from the Java.util.EventObject class, as defined by the developer themselves.
Package Com.shuyan.javatest.eventtest;import Java.util.eventobject;public Class Dnsevent extends EventObject { Private String UserData; Private long parsetime; Public dnsevent (Object source) { super (source); } Public Dnsevent (Object source, String UserData, long parsetime) { super (source); This.userdata = UserData; This.parsetime = Parsetime; } Public String Getuserdata () { return userData; } public void Setuserdata (String userData) { this.userdata = userData; } Public long Getparsetime () { return parsetime; } public void Setparsetime (long parsetime) { this.parsetime = Parsetime; }}
2. Event Listener: implement Java.util.EventListener Interface, register on the event source, when the property or state of the event source changes, get the corresponding listener to call its internal callback method.
Package Com.shuyan.javatest.eventtest;import Java.util.eventlistener;public Interface Dnseventlistener extends EventListener {public void processdnsevent (Dnsevent dnsevent);
Detailed implementation classes for listeners
public class Dnseventalistenerimpl implements Dnseventlistener { @Override public void Processdnsevent ( Dnsevent dnsevent) { String UserData = Dnsevent.getuserdata (); System.out.println ("userdata-->" + UserData);} }
3. Event Source: The event occurs where an event occurs because an event source property or state has changed. Because event listeners are to be registered on the event source, the event source class should have a container for the listener (List,set, and so on).
< Span style= "FONT-FAMILY:HELVETICA,TAHOMA,ARIAL,SANS-SERIF; font-size:14px; line-height:25.2000007629395px ">
public class Managerlistener { private list<dnseventlistener> listeners = NULL; private static class Singleton { static Managerlistener Managerlistener = new Managerlistener (); } public static Managerlistener getinstance () { return singleton.managerlistener; } Private Managerlistener () { listeners = new arraylist<> (); } public void Adddnseventlistener (Dnseventlistener listener) { this.listeners.add (listener); } public void Removednseventlistener (Dnseventlistener listener) { this.listeners.remove (listener); } public void Firednseventlistener (Dnsevent event) {for (Dnseventlistener listener:listeners) { Listener.processdnsevent (event);}}}
Tests such as the following:
public class Dnseventtest {public static void Main (string[] args) { Managerlistener Managerlistener = Managerlis Tener.getinstance (); Dnsevent dnsevent = new Dnsevent (Managerlistener, "data", 1000L); Dnseventalistenerimpl listener = new Dnseventalistenerimpl (); Managerlistener.adddnseventlistener (listener); Managerlistener.firednseventlistener (dnsevent); }}
< Span style= "FONT-FAMILY:HELVETICA,TAHOMA,ARIAL,SANS-SERIF; font-size:14px; line-height:25.2000007629395px ">
< Span style= "FONT-FAMILY:HELVETICA,TAHOMA,ARIAL,SANS-SERIF; font-size:14px; line-height:25.2000007629395px "> references: http://blog.csdn.net/longlong3050/article/details/6854456
Event Monitoring mechanism in Java