Java观察者模式-模拟Awt Button
作者:网络转载 发布时间:[ 2015/6/26 14:23:27 ] 推荐标签:开发语言
一、概述
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 }
三、运行结果
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11