天天看點

java的監聽器實作

    我們都知道,我們的spring容器是通過classLoaderListener來建立的,而ClasssLoaderListener實作了ServletListener接口,這樣,在比如tomcat初始化servlet容器時,我們就可以建立出我們的spring容器了。

     下面我就來講一下java中監聽器是怎麼樣實作的。先來講一下原理

     java中的監聽器涉及到三個對象,事件源,事件對象,事件監聽器對象。首先是将事件監聽器對象注冊到事件源上,然後當事件源觸發事件時,通過回掉将事件對象傳給事件監聽器對象,然後事件監聽器對象來調用相關的監聽的方法。

   事件對象,Person對象,eat方法

public class Person{
   private PersonListener personListener;
           
public void registerListener(PersonListener personListener){
          this.personListener=personListener;
   }
   public void eat(){
      if(personListener!=null){
         Event event=new Event(this);
         this.personListener.doEat(event);
      }
      System.out.println("人吃飯");
   }
}
           

事件對象 Event

public class Event{
  private Person person;
  public Event(Person person){
     this.person=person;
  }
  public Perosn getPerson(){
     return this.person;
  }
  public void setPerson(Person person){
     this.person=person;
  }
}
           

事件監聽對象 PersonListener

public interface PersonListener{
   public void doEat(Event event);
}
           

事件監聽器的實作類 PersonListenerImpl

public class PersonListenerImpl implements PersonListener{
  public void doEat(Event event){
     System.out.println("人吃東西之前執行");
  }
}
           

測試方法 TestPersonListener

public class TestPersonListener{
  public static void main(String[] args){
     Person person=new Person();
     person.registListener(new PersonListener());
     person.eat();
  }
}
           

繼續閱讀