zoukankan      html  css  js  c++  java
  • Java-马士兵设计模式学习笔记-观察者模式-模拟Awt Button

    一、概述

    Java 的Awt是 Observer模式,现用Java自己模拟awt中Button的运行机制

    二、代码

    1.Test.java

     1 import java.text.DateFormat;
     2 import java.text.SimpleDateFormat;
     3 import java.util.ArrayList;
     4 import java.util.Date;
     5 import java.util.List;
     6 
     7 public class Test {
     8 
     9     public static void main(String[] args) {
    10         Button b = new Button();
    11         b.addActionListener(new MyActionListener1());
    12         b.addActionListener(new MyActionListener2());
    13         b.buttonPress();
    14     }
    15 }
    16 
    17 class Button {
    18     
    19     //用List存放Listener
    20     private List<ActionListener> actionListeners = new ArrayList<ActionListener>();
    21     
    22     public void addActionListener(ActionListener l) {
    23         actionListeners.add(l);
    24     }
    25     
    26     public void buttonPress(){
    27         ActionEvent e = new ActionEvent(System.currentTimeMillis(), this);
    28         for (ActionListener l : actionListeners) {
    29             l.actionPerformed(e);
    30         }
    31     }
    32 }
    33 
    34 interface ActionListener {
    35     public void actionPerformed(ActionEvent e);
    36 }
    37 
    38 class MyActionListener1 implements ActionListener {
    39 
    40     @Override
    41     public void actionPerformed(ActionEvent e) {
    42         System.out.println("MyActionListener1");
    43         System.out.println("事件发生时间:"+e.getTime()+" 事件源:"+e.getSource());
    44     }
    45     
    46 }
    47 
    48 class MyActionListener2 implements ActionListener {
    49 
    50     @Override
    51     public void actionPerformed(ActionEvent e) {
    52         System.out.println("MyActionListener2");
    53         System.out.println("事件发生时间:"+e.getTime()+" 事件源:"+e.getSource());
    54 
    55     }
    56     
    57 }
    58 
    59 class ActionEvent {
    60     
    61     private long time;
    62     private Object source;
    63     
    64     public ActionEvent(long time, Object source) {
    65         this.time = time;
    66         this.source = source;
    67     }
    68 
    69     public Object getSource() {
    70         return source;
    71     }
    72 
    73     public String getTime() {
    74 //        DateFormat df = new SimpleDateFormat("dd:MM:yy:HH:mm:ss");
    75         DateFormat df = new SimpleDateFormat("yyyy:MM:dd---HH:mm:ss");
    76         return df.format(new Date(time));
    77     }
    78     
    79     
    80 }

    三、运行结果

  • 相关阅读:
    集中式(SVN)和分布式(Git)版本控制系统的简单比较
    Mac 提示安装包已损坏
    React 获取 url 参数 —— this.props.match
    编写一个 Chrome 浏览器扩展程序
    webpack 配置学习笔记
    Python 进阶学习笔记
    Python 入门学习笔记
    (转)Unity3d各种坑
    unity3d 网页游戏客户端工程构建方案
    (转)在Unity3D的网络游戏中实现资源动态加载
  • 原文地址:https://www.cnblogs.com/shamgod/p/4590378.html
Copyright © 2011-2022 走看看