美文网首页
2019-02-26 Java监听器简单练手示例

2019-02-26 Java监听器简单练手示例

作者: 攻城狮哦哦也 | 来源:发表于2019-02-26 11:14 被阅读0次

    业务逻辑:孩子在吃饭前需要洗手,所以我们需要监听孩子的吃饭事件,当吃饭事件发生时,执行监听事件

    1 孩子类

    package listen;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Child {
        private String name;
        private List<Listener> listeners = new ArrayList<Listener>();
        
        //为该对象注册监听
        public void addListener(Listener listener) {
            this.listeners.add(listener);
        }
    
    
    
        public void eat() {
            //遍历监听集合
            for(Listener listener : listeners) {
                //对相应的监听执行不同的逻辑
                if(listener instanceof RemaindWashListener) {
                    RemaindWashListener washingHandsListener = (RemaindWashListener)listener;
                    //调用监听中的处理方法
                    washingHandsListener.fireAfterEventInvoked(new WashingHandsEvent(this,"洗手"));
                }
            }
            System.out.println("吃饭");
        }
    }
    

    2 事件类

    package listen;
    
    import java.util.EventObject;
    
    public class Event extends EventObject{
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        /**
         * 
         * source 为事件源对象,在此示例中就是Child对象
         * @param source
         */
        public Event(Object source) {
            super(source);
        }
    
    
    }
    
    

    3 事件接口实现类

    package listen;
    
    public class WashingHandsEvent extends Event{
        private String eventName; 
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        public WashingHandsEvent(Object source,String eventName) {
            super(source);
            this.eventName = eventName;
        }
     
        public String getEventName() {
            return eventName;
        }
     
        public void setEventName(String eventName) {
            this.eventName = eventName;
        }
    
    }
    
    

    4 监听器接口

    package listen;
    
    import java.util.EventListener;
    
    public interface Listener extends EventListener{
        public void fireAfterEventInvoked(Event event);
    }
    
    

    5 监听器实现

    package listen;
    
    public interface RemaindWashListener extends Listener{
        /**
         * 监听器实现类型
         * 1、可以将方法的具体实现写在改实现类中,
         * 2、也可以将该类定义为接口,在调用的时候再用内部类的方式来写具体实现。(对于调用者实现比较灵活)
         * 本示例用的是第二种
         */
        public void fireAfterEventInvoked(Event event); /*{
            WashingHandsEvent WashingHandsEvent = (WashingHandsEvent)event;
            System.out.println("饭前需要"+WashingHandsEvent.getEventName());
            
        }
    */
    }
    
    

    6 main测试类

    package listen;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestMain {
    
        public static void main(String[] args) {
            Child child = new Child();
            //在被监听对象中注册监听
            child.addListener(new RemaindWashListener() {//实现监听类抽象接口和方法具体实现
                @Override
                public void fireAfterEventInvoked(Event event) {
                    System.out.println("吃饭前洗手");
                }
            });
            child.eat();
    
        }
    
    }
    
    

    7 演示结果

    图片.png

    相关文章

      网友评论

          本文标题:2019-02-26 Java监听器简单练手示例

          本文链接:https://www.haomeiwen.com/subject/zlzoyqtx.html