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

  • 相关阅读:
    redis安装及教程
    Spring Cloud Alibaba系列教程
    EasyCode代码生成工具使用介绍
    FastDFS服务器搭建
    轻量级的java HTTP Server——NanoHttpd
    java代码的初始化过程研究
    浅谈设计模式的学习(下)
    浅谈设计模式的学习(中)
    浅谈设计模式的学习(上)
    PGET,一个简单、易用的并行获取数据框架
  • 原文地址:https://www.cnblogs.com/huanghai/p/2367911.html
Copyright © 2011-2022 走看看