今天听群里人谈到.net的事件委托.貌似JAVA里是与内部类和接口有关..
对这俩的应用都模糊,求高人给一实例参看

解决方案 »

  1.   

    事件委托:
    接口有关 -- 针对接口中的钩子方法集合做相应的实现 默认适配方法[实际是貌似钩子方法?] 
    内部类有关 --直接在代码快里实现接口达到隐藏细节 这个可以自由选择, 据说会做inline 优化?不清楚
      

  2.   

    Java的方式
    interface MyListener{void actionPerformed();}
    class MyButton
    {
       ArrayList< MyListener > myListeners = new ArrayList< MyListener >();
       public void addListener(MyListener listener)
       {
          myListeners .add(listener);
       }
       public void doClick()
       {
         for(int i=0;i< myListeners.length;i++) myListeners[i]. actionPerformed();
       }
    }
    添加监听
     button1. addListener(
       new MyListener()
       {
       public void actionPerformed()
       {
       JOptionPane.showMessageDialog(frame,
       "我被点了");
       }
       }
       );C#的方式
    deletegate void MyDelegate();  //委托
    class MyButton
    {
      public event MyDelegate OnClick;  //事件
      public void DoClick()
      {
         if(OnClick!=null) OnClick();
      }
    }
    添加监听
    public void SayHello(){MessageBox.Show("Hello");}
    button1. OnClick += new MyDelegate(SayHello);