`

azkaban源码解读(二):观察者模式在job执行过程中事件监听应用

 
阅读更多

抽象观察者

public interface EventListener {
  public void handleEvent(Event event);
}

 抽象观察主体

public class EventHandler {
  //持有观察者容器
  private HashSet<EventListener> listeners = new HashSet<EventListener>();

  public EventHandler() {
  }
  //添加观察者
  public void addListener(EventListener listener) {
    listeners.add(listener);
  }
  //通知所有观察者  
  public void fireEventListeners(Event event) {
    ArrayList<EventListener> listeners =
        new ArrayList<EventListener>(this.listeners);
    for (EventListener listener : listeners) {
      listener.handleEvent(event);
    }
  }
  //删除观察者
  public void removeListener(EventListener listener) {
    listeners.remove(listener);
  }
}

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics