郑州网站建设十大公司,wordpress category order,怎么自己做个免费网站吗,免费装修设计网这里写目录标题 先进行专栏介绍再插一句 开始喽事件监听机制分析观察者模式观察者模式由以下几个角色组成#xff1a;观察者模式的工作流程如下#xff1a;观察者模式的优点包括#xff1a;观察者模式适用于以下场景#xff1a;总结 事件监听机制的工作流程如下#xff1a… 这里写目录标题 先进行专栏介绍再插一句 开始喽事件监听机制分析观察者模式观察者模式由以下几个角色组成观察者模式的工作流程如下观察者模式的优点包括观察者模式适用于以下场景总结 事件监听机制的工作流程如下Java代码示例 先进行专栏介绍
本专栏是自己学Java的旅途纯手敲的代码自己跟着黑马课程学习的并加入一些自己的理解对代码和笔记
进行适当修改。希望能对大家能有所帮助同时也是请大家对我进行监督对我写的代码进行建议互相学习。再插一句
有一段时间断更了是在更新数据结构与算法专栏有兴趣的可以去看一看比较不错开始喽
事件监听机制
Java中的事件监听机制是一种用于处理用户交互事件的机制。它允许开发人员在特定事件发生时执行特定的代码逻辑。分析
在Java中事件监听机制是基于 观察者模式实现的。 观察者模式 观察者模式是一种行为型设计模式它定义了对象之间的一对多依赖关系使得当一个对象的状态发生变化时
所有依赖它的对象都会得到通知并自动更新。观察者模式由以下几个角色组成
1Subject主题主题是被观察的对象它维护了一个观察者列表并提供了用于添加、删除和通知观察者的方法。主题可以是一个接口或抽象类具体的主题类实现了主题接口。
2、Observer观察者观察者是依赖于主题的对象它定义了一个更新方法当主题状态发生变化时观察者会被通知并执行相应的更新操作。观察者可以是一个接口或抽象类具体的观察者类实现了观察者接口。
3、ConcreteSubject具体主题具体主题是主题的具体实现类它维护了一个状态并在状态发生变化时通知观察者。具体主题类通常包含了观察者列表并提供了添加、删除和通知观察者的方法。
4、ConcreteObserver具体观察者具体观察者是观察者的具体实现类它实现了观察者接口中的更新方法。具体观察者类在收到通知后根据具体的业务需求执行相应的更新操作。观察者模式的工作流程如下
1、主题对象维护观察者列表并提供了添加、删除和通知观察者的方法。
2、观察者对象注册到主题对象上成为主题对象的观察者。
3、当主题对象的状态发生变化时它会遍历观察者列表并调用每个观察者的更新方法。
4、每个观察者收到通知后根据具体的业务需求执行相应的更新操作。观察者模式的优点包括
1、解耦主题对象和观察者对象之间解耦它们可以独立变化互不影响。
2、可扩展性可以动态地添加、删除观察者对象使得系统具有良好的扩展性。
3、灵活性观察者模式可以实现一对多的依赖关系一个主题对象可以通知多个观察者对象。观察者模式适用于以下场景
当一个对象的改变需要同时改变其他对象的时候可以使用观察者模式。
当一个抽象模型有两个方面其中一个方面依赖于另一个方面时可以使用观察者模式。
当一个对象必须通知其他对象但又不希望与被通知的对象形成紧耦合关系时可以使用观察者模式。总结
观察者模式通过定义一对多的依赖关系实现了对象之间的解耦和松耦合。它提供了一种灵活的方式来处理对象之间的通信和状态变化使得系统具有更好的可扩展性和可维护性。事件监听机制的工作流程如下
定义事件源事件源是触发事件的对象它通常是一个类或接口。事件源需要提供注册和注销监听器的方法并在适当的时候触发事件。
定义事件监听器接口事件监听器接口定义了事件发生时要执行的方法。通常事件监听器接口包含一个或多个事件处理方法。
实现事件监听器根据定义的事件监听器接口实现具体的事件监听器类。这些类负责处理事件发生时的逻辑操作。
注册事件监听器在事件源上调用注册方法将事件监听器对象注册到事件源上。这样事件源就知道要通知哪些监听器。
触发事件当事件源发生事件时它会遍历已注册的监听器列表并调用每个监听器的事件处理方法。这样每个监听器都可以根据具体的业务需求执行相应的操作。
响应事件每个监听器收到事件通知后根据具体的业务需求执行相应的操作。这些操作可以包括更新界面、处理数据、发送通知等。Java代码示例
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class crj {public static void main(String[] args) {JFrame jfnew JFrame();jf.setTitle(事件监听机制);jf.setSize(400,300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//确定按钮JButton jButtonnew JButton(你点我啊);jButton.setBounds(0,0,100,100);jf.add(jButton);jButton.addActionListener(new ActionListener() {Overridepublic void actionPerformed(ActionEvent e) {System.out.println(你点我啊);}});jf.setVisible(true);}
}