JAVA中事件处理机制是观察者模式或者说委托(授权)管理的一种。
1、在理解JAVA中事件处理机制前我们必须先理解三个重要的概念:
事件源:产生事件的对象;
事件处理器(监听器):负责处理事件的方法。
事件对象:用于在事件源与事件处理器间传递信息的桥梁。
它们之间的关系是:当事件源产生事件时,通过事件调用监听器相应的事件处理方法。
2、通过恋爱关系模拟事件处理机制:女孩子(事件源)产生高兴或不高兴的情绪(事件对象)时,男朋友(监听器)应该怎么做。
1、确定三个类:Gril,Emotion,Boy
2、Gril:要有一个名字属性,一个男朋友的属性(不可能满大街随便找个人给听你发牌气吧),还有一个add添加男朋友的方法。还有一个remove分手的方法。
Boy:要有一个名字属性,要有happy,和unhappy的两个在女朋友找你时做相应处理的方法吧。他还要有监听器的功能,所以要实现EventListener接口吧。我们在查看到EventListener只是一个简单的标记接口,所以我们一般创建一个具体有点功能的监听接口EventListen具有happy,unhappy抽像方法,而Boy通过实现这个接口,来完成有个性的处理方法。
Emotion:是一个事件对象,凭什么它就是一个事件对象呀,它要继承EventObject吧。查帮助看下。其中有一个方法getSource,通过这个方法就可以找到事件源了吧。通过查看EventObject构造方法,没有无参的构造方法,而创建对象默认是向上调用父类无参构造方法的,这样会出现错误,所以我们必须写一个含参的调用父类构造方法。
3、Boy要根据Gril产出的不同事件对象使用不同的处理方法时,要接受事件对象(Emotion)的传入吧。即方法接收传入参数。
4、Gril:有一个发牌气的方法fire,假设她1,3,5 happy,2,4,6 unhappy,7分手。
5、前面已经实现了事件处理机制模型,为了更完善点使程序有多个男孩子追,并且加入异常处理。
import java.util.*;
class Gril {
String name;
Boy b;// 男朋友的属性
public Gril(String name) {
this.name = name;
}
public void addBoy(Boy b) throws MyHeartException // 相当注册监听器
{
// 添加男朋友
if (this.b == null) {
this.b = b;
System.out.println("haha,I have boyfriend now");
} else {
throw new MyHeartException("I have boyfriend,wait me for a week");
}
}
public void remove() {
this.b = null;
System.out.println("sorry,you never understand me!");
}
public void fire() {
if (b == null)
System.out.println("I have not boyfriend now!");
else {
Emotion e = new Emotion(this);
for (int i = 1; i < 7; i++) {
if (i % 2 == 0)
b.unhappy(e);
else {
b.happy(e);
}
}
remove();
}
}
}
class Boy implements EventListen {
String name;
public Boy(String name) {
this.name = name;
}
public void happy(Emotion e) {
Gril g = (Gril) e.getSource();
System.out.println(name + " said :" + g.name + " you happy,I happy.");
}
public void unhappy(Emotion e) {
Gril g = (Gril) e.getSource();
System.out.println(name + " said :" + g.name
+ " Do not worry!you have my too!");
}
}
import java.util.EventObject;
class Emotion extends EventObject {
public Emotion(Object src) { // EventObject的构造方法只有无参的构造方法
super(src); // 所以只有显示的调用,src代表事件源
}
}
import java.util.EventListener;
interface EventListen extends EventListener{
void happy(Emotion e);
void unhappy(Emotion e);
}
public class Test {
public static void main(String[] args) {
Gril g = new Gril("Anna");
Boy b1 = new Boy("Tom");
Boy b2 = new Boy("Jon");
try {
g.addBoy(b1);
g.addBoy(b2);
} catch (Exception e) {
e.printStackTrace();
}
g.fire();
}
}
class MyHeartException extends Exception {
public MyHeartException(String str) {
super(str);
}
}
相关链接:
★ Java知识点汇总
全球软件项目外包平台 兼职做外包 挣Money!
分享到:
相关推荐
正如描述中所比喻的,尽管恋爱过程中可能会出现各种问题,但我们仍希望能继续前行,Java异常处理机制正是如此,它让程序在遇到错误时有机会恢复并继续执行。 Java的异常体系以`Throwable`为顶级父类,`Throwable`有...
12. **Java事件处理机制与“恋爱关系”**:这个比喻可能指的是事件监听器模型,事件源(如按钮)和监听器之间存在“关系”,当事件发生时,监听器接收到通知并执行相应操作。 13. **Java代码优化编程**:优化包括...
JavaEE,全称Java Platform, Enterprise Edition,是Java语言在企业级应用开发中的标准框架。它包含了多种服务、组件模型以及接口,为开发高效、安全、可扩展的网络应用提供了强大的支持。在这个毕业设计项目中,...
这个压缩包包含了一套完整的前端和后端源代码,以及10万条预设的恋爱对话数据,旨在帮助用户提高在恋爱关系中的沟通能力,解决情感交流中的困扰。以下是关于这个项目的一些关键知识点: 1. **前后端分离**:这是一...
这个规则被许多人用来评估恋爱或婚姻关系中双方年龄是否适宜。本文将深入探讨这款应用的开发背景、技术实现以及其对Java编程语言的运用。 首先,了解“半加七”规则的背景对于理解该应用的核心功能至关重要。这一...
Java应用程序通常会与关系型数据库如MySQL或NoSQL数据库如MongoDB配合使用。在" Datingapp"中,可能涉及用户资料、匹配算法数据、聊天记录等存储需求,因此数据库设计需考虑高效查询和数据安全性。 3. **RESTful ...
**Hibernate** 是一个对象关系映射(ORM)框架,它将Java对象与数据库表进行映射,从而避免了传统的JDBC操作,减少了大量的SQL代码。Hibernate提供了丰富的API,可以进行对象的持久化操作,包括CRUD(创建、读取、...
- 插件机制:Jfinal支持灵活的插件扩展,如Shiro安全框架、ActiveRecord ORM框架等,可以快速集成到项目中。 3. 整合RequireJS与Jfinal: - 路由配置:在Jfinal中,通过`config/config_router.js`配置路由,与...