监听器模式

谁说胖子不能爱 提交于 2019-12-05 07:39:36

22:18:13

package demo.desgin_pattern.listener.demo1;

/**
 * @author niecong
 * @创建时间 2019/8/10
 * 事件源持有 一个监听器  并且实现了事件的接口
 **/
public class EventSource implements IEvent {
    boolean button;
    boolean mouse;
    private IEventListener mEventListener;

    //注册监听器
    @Override
    public void setEventListener(IEventListener arg) {
        mEventListener = arg;
    }

    //触发事件
    public void mouseEventHappened() {
        mouse = true;
        mEventListener.doEvent(this);
    }

    @Override
    public boolean ClickButton() {
        return button;
    }

    @Override
    public boolean MoveMouse() {
        // TODO Auto-generated method stub
        return mouse;
    }

}
 1 package demo.desgin_pattern.listener.demo1;
 2 
 3 /**
 4  * @author niecong
 5  * @创建时间 2019/8/10
 6  **/
 7 public class EventSource2 implements IEvent {
 8     boolean button;
 9     boolean mouse;
10     private IEventListener ml;
11 
12     @Override
13     public void setEventListener(IEventListener arg) {
14         ml = arg;
15     }
16 
17     @Override
18     public boolean ClickButton() {
19         // TODO Auto-generated method stub
20         return button;
21     }
22 
23     @Override
24     public boolean MoveMouse() {
25         // TODO Auto-generated method stub
26         return mouse;
27     }
28 
29     // 触发事件
30     public void buttonEventHappened() {
31         button = true;
32         ml.doEvent(this);
33     }
34 
35 }
 1 package demo.desgin_pattern.listener.demo1;
 2 
 3 /**
 4  * @author niecong
 5  * @创建时间 2019/8/10
 6  **/
 7 public interface IEvent {
 8     void setEventListener(IEventListener arg);
 9 
10     boolean ClickButton();
11 
12     boolean MoveMouse();
13 
14 }
 1 package demo.desgin_pattern.listener.demo1;
 2 
 3 /**
 4  * @author niecong
 5  * @创建时间 2019/8/10
 6  * 事件监听器的 方法是事件处理器
 7  **/
 8 public interface IEventListener {
 9 
10     void doEvent(IEvent arg);
11 
12 }
package demo.desgin_pattern.listener.demo1;

/**
 * @author niecong
 * @创建时间 2019/8/10
 **/
public class Test {

    public static void main(String[] args) {
        // 事件源(被监听的对象)
        EventSource m1 = new EventSource();
        EventSource2 m2 = new EventSource2();
        // 监听器
        IEventListener mEventListener = new IEventListener() {

            @Override
            public void doEvent(IEvent arg) {
                if (true == arg.ClickButton()) {
                    System.out.println("你点击了按钮");
                } else if (true == arg.MoveMouse()) {
                    System.out.println("你移动了鼠标");
                }
            }
        };

        // 注册监听器到事件源
        m1.setEventListener(mEventListener);
        m1.mouseEventHappened();

        // 注册监听器到事件源
        m2.setEventListener(mEventListener);
        m2.buttonEventHappened();
    }

}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!