一、概述 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[] Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个例子中,我们模拟了AWT(Abstract Window Toolkit)中的Button组件,来演示观察者模式的应用。 在Java AWT库中,Button类是一个可以被用户点击的图形界面元素。当用户点击Button时,它会触发一个事件,这个事件可以被多个监听器(Observer)接收到。在我们的模拟中,我们创建了一个名为Button的类,该类拥有一个ArrayList来存储ActionListener类型的对象,这些对象就是观察者。 我们创建一个Test类,作为程序的主入口。在main方法中,我们实例化了一个Button对象,并添加了两个监听器:MyActionListener1和MyActionListener2。然后调用buttonPress()方法模拟按钮被按下,触发事件。 Button类中,我们定义了一个List来存储ActionListener类型的监听器,并提供了addActionListener()方法来添加新的监听器。当buttonPress()方法被调用时,它创建了一个ActionEvent对象,这个对象包含了事件发生的时间和事件源(即Button对象)。然后,遍历actionListeners列表,对每个监听器调用其actionPerformed()方法,将事件传递给它们。 ActionListener接口定义了一个方法actionPerformed(ActionEvent e),当监听到ActionEvent时,实现这个接口的类需要提供处理事件的具体逻辑。在这里,我们创建了两个实现了ActionListener接口的类:MyActionListener1和MyActionListener2。它们分别在actionPerformed()方法中打印出不同的消息,表明各自收到了事件通知。 ActionEvent类是自定义的一个事件类,包含事件发生的时间(time)和事件源(source)。在构造函数中,我们将时间和事件源传入,并提供了获取这两个属性的方法。 通过这种方式,我们模拟了AWT中Button的事件触发机制,展示了观察者模式如何工作。每个监听器(MyActionListener1和MyActionListener2)都是Button状态变化的观察者,当Button的状态(被点击)发生变化时,它们都会收到通知并执行相应的操作。这种设计模式使得代码具有很好的扩展性,可以方便地添加或移除监听器,而不会影响其他部分的代码。
- 粉丝: 6
- 资源: 914
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0