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;
         }
     }

  • 相关阅读:
    认识Java数组(一)
    Java之定时任务详解
    Java三大特征之多态(三)
    Java三大特征之继承(二)
    Java三大特征之封装(一)
    eclipse常用快捷键汇总
    JDK动态代理
    Java代理模式——静态代理模式
    CRISPR/Cas9基因敲除原理及实验建议
    MicroRNA 详解
  • 原文地址:https://www.cnblogs.com/huanghai/p/2367911.html
Copyright © 2011-2022 走看看