001package gu.dtalk.event;
002
003import java.util.Observable;
004import java.util.Observer;
005
006/**
007 * 事件侦听器抽象类
008 * @author guyadong
009 *
010 * @param <E> 事件的参数类型
011 */
012public abstract class BaseObserver<E extends ItemEvent<?>> implements Observer {
013
014        public BaseObserver() {
015        }
016        /**
017         * 执行更新事件
018         * @param event
019         */
020        protected abstract void doUpdate(E event);
021        @SuppressWarnings("unchecked")
022        @Override
023        public final void update(Observable o, Object arg) {
024                E event;
025                try {
026                        // 通过强制类型转时是否抛出异常自动过滤不属于当前侦听器关注的对象
027                        event = (E)arg;
028                } catch (Exception e) {         
029                        return;
030                }
031                doUpdate(event);
032        }
033
034}