zoukankan      html  css  js  c++  java
  • 【设计模式】observer观察者模式:模拟java.awt.Button事件监听。

    package cc.nommo.dp;

    import java.util.List;
    import java.util.ArrayList;

    public class Test {

        public static void main(String[] args) {
            Button btn1 = new Button("第一个按钮");
            Button btn2 = new Button("第二个按钮");
            
            //为第一个按钮添加监听器
            btn1.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println(e.getName() + "被点击");
                }
            });

            //为第二个按钮添加监听器
            btn2.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println(e.getName() + "被点击");
                }
                
            });
            
            
            //模拟点击事件
            btn1.click();
            btn2.click();
        }

    }


     class Button {
         

         private String name = null;    
         private List<ActionListener> actionlisteners = new ArrayList<ActionListener>();
         
         public Button(String name) {
            this.name = name;
         }
         
         public void click(){
             ActionEvent e = new ActionEvent(this.name);
             for(int i=0; i<actionlisteners.size(); i++){
                 ActionListener l = actionlisteners.get(i);
                 l.actionPerformed(e);
             }
         }
         
         public void addActionListener(ActionListener e){
             actionlisteners.add(e);
         }
     }

     /*
      * 监听器接口
      
    */
     interface ActionListener {
         public void actionPerformed(ActionEvent e);
     }
     
     /*
      * 事件源类
      
    */
     class ActionEvent {
         private String name;
         
         public ActionEvent(String name){
             this.name = name;
         }
         
         public String getName(){
             return name;
         }
     }

  • 相关阅读:
    202011.19
    202011.18
    202011.17
    202011.16
    202011.14
    jdk的下载和配置
    layui中form表单
    JS中utocomplete
    转:JqueryUI学习笔记-自动完成autocomplete
    JSON.parse()与JSON.stringify()的区别
  • 原文地址:https://www.cnblogs.com/huanghai/p/2367911.html
Copyright © 2011-2022 走看看