PackageCn.my.demo;//Designing a listener Public classDemo2 { Public Static voidMain (string[] args) {person P=NewPerson (1001, "Zhang San"); P.refisterlistener (NewPersonlistener () { Public voidDorun (Event e) {person P=E.getsource (); System.out.println ("Who's in front of people to has a meal, that's" +p.getname ()); } Public voiddoeat (Event e) {person P=E.getsource (); System.out.println ("Who in the previous run, which is" +p.getname ()); } }); P.eat (); P.run (); }}//Viewer Design Patternclassperson{PrivateInteger ID; PrivateString name; PublicInteger getId () {returnID; } Public voidsetId (Integer id) { This. ID =ID; } PublicString GetName () {returnname; } Public voidsetName (String name) { This. Name =name; } PublicPerson (Integer ID, String name) { This. id=ID; This. name=name; } //This is an event source . PrivatePersonlistener Listener; Public voideat () {if(listener!=NULL) {listener.doeat (NewEvent ( This)); } System.out.println ("This is eat!"); } Public voidrun () {if(listener!=NULL) {Listener.dorun (NewEvent ( This)); } System.out.println ("This is run!"); } Public voidRefisterlistener (Personlistener listener) { This. listener=Listener; }}//Event ListenerInterfacepersonlistener{ Public voiddoeat (Event e); Public voidDorun (Event e);}//This is the event object .classevent{//Event object needs to encapsulate event source object PrivatePerson source; PublicPerson GetSource () {returnsource; } PublicEvent (person source) {Super(); This. Source =source; } PublicEvent () {Super(); } Public voidSetSource (person source) { This. Source =source; }}
Event Listener Principle-event object, event listener, event source