知识大全 Java Listener模式

Posted

篇首语:博观而约取,厚积而薄发。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java Listener模式相关的知识,希望对你有一定的参考价值。

Java Listener模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  每种语言都有自己回调的方法 java也不例外

  Java的回调是采用多态的方式来回调 比如:

   interface MouseListener

        //当click方法被调用的时候代表被鼠标点击了

         void click();

  

  上面是一个接口 里面只有一个方法 先就通过一个例子展示java是如果施展多态的力量了

   public class Model

  

        //初始化 个监听器

         private MouseListener[] listeners = new MouseListener[ ];

        //用于记录当前listeners数组记录到了哪里

         int index = ;

  

        public void addListener(MouseListener listener)

            //向这个model中注册一个监听器

             listeners[index++] = listener;

       

  

        public void clickModel()

            //调用注册进来所有的listener的click方法

             for (int i = ; i < index; i++)

                listeners[i] click();

           

       

        //测试model

         public static void main(String[] args)

            Model model = new Model();

            //添加一个匿名内部类 里面实现了click方法

             model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

            //再添加一个内部类

             model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

  

            //下面给model一个点击

             model clickModel();

       

  

  

  

  

  以上是java的MVC框架下最精彩的一段代码 下面是model的工作例子:

   //测试model

         public static void main(String[] args)

            Model model = new Model();

            //添加一个匿名内部类 里面实现了click方法

             model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

            //再添加一个内部类

            model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

  

            //下面给model一个点击 在实际的JDK源代码中 也是这样子去调用Model中的响应方法的

            model clickModel();

       

  

  我们可以看到 只点击一次model 却可以输出了 次 我被点击了 的信息 这也就是为什么你可以向JButton JComboBox JList JTable等等里面添加任意多的各种listener 当然其中的奥秘仍需要各位读者自己慢慢琢磨 下面是源代码:

   public class Model

  

        //初始化 个监听器

        private MouseListener[] listeners = new MouseListener[ ];

        //用于记录当前listeners数组记录到了哪里

        int index = ;

  

        public void addListener(MouseListener listener)

            //向这个model中注册一个监听器

            listeners[index++] = listener;

       

  

        public void clickModel()

            //调用注册进来所有的listener的click方法

            for (int i = ; i < index; i++)

                listeners[i] click();

           

       

        //测试model

        public static void main(String[] args)

            Model model = new Model();

            //添加一个匿名内部类 里面实现了click方法

            model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

            //再添加一个内部类

            model addListener(new MouseListener()

  

                public void click()

                    System out println( 我被点击了 );

               

            );

  

            //下面给model一个点击

            model clickModel();

       

  

  

   interface MouseListener

        //当click方法被调用的时候代表被鼠标点击了

        void click();

cha138/Article/program/Java/hx/201311/26201

相关参考