我们写程序时,对某个Button进行事件处理时,加个Listener,然后按下Button,VM就自动跳到Listener中的处理代码去了,这种机制是如何实现的,那又能不能自己模仿一下呢?谢谢....

解决方案 »

  1.   


    这个 就是 设计模式里的 观察者模式,,,,,,你google下,,,,
      

  2.   

    public class test {
    public static void main(String[] args) {
    Listener l = new Listener() { public void onClick() {
    System.out.println("监听了事件");
    }
    };

    MyButton btn = new MyButton();
    // 没有加载监听器情况下
    btn.click();
    // 加载监听器
    btn.setListener(l);
    btn.click();
    }
    }
    interface Listener{
    public void onClick();
    }
    class MyButton {
    Listener listener;

    public MyButton() {
    Listener listener = new Listener() {
    public void onClick() {
    }
    };
    this.listener = listener;
    }

    public void setListener(Listener listener) {
    this.listener = listener;
    }

    public void click() {
    System.out.println("按下了按钮");
    listener.onClick();
    }
    }
      

  3.   

    谢谢2楼的回答,但是这个答案与我的想法有点差异。Button设置了监听Listener,Listener有个方法为onClick(),如果点击了Button,并不是要咱手动去调用( btn.onClick()此处已经指明了是btn,我的想法是只要设置了btn.setListener(Listener)后,没有"btn."的前缀下,即可自动去运行onClick()的代码) 进行处理的,如何做自动去运行onClick()的代码呢?
      

  4.   

    也可以
    用spring的aop模块面向切面编程
    监视调用的方法名