博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 事件机制的使用
阅读量:2236 次
发布时间:2019-05-09

本文共 2566 字,大约阅读时间需要 8 分钟。

Java中的事件机制在这里回顾和总结下。

1.事件对象

import java.util.EventObject;public class DoorEvent extends EventObject{		/**	 * Door open and close event	 */	private static final long serialVersionUID = 1L;	private String doorState = "";		public DoorEvent(Object source,String state) {		super(source);		// TODO Auto-generated constructor stub		this.doorState = state;	}	public void setDoorState(String doorstate){		this.doorState = doorstate;	}		public String getDoorState(){		return this.doorState;	}}
2.Listener接口

import java.util.EventListener;public interface DoorListener extends EventListener {	public void doorEvent(DoorEvent event);}
3.具体的Listener1和Listener2

public class MyDoorListener1 implements DoorListener{	@Override	public void doorEvent(DoorEvent event) {		// TODO Auto-generated method stub		if(event.getDoorState() == "open"){			System.out.println("door1 opened.");		}else{			System.out.println("door1 closed");		}	}}
public class MyDoorListener2 implements DoorListener{	@Override	public void doorEvent(DoorEvent event) {		// TODO Auto-generated method stub		if(event.getDoorState() == "open"){			System.out.println("door2 opened.");		}else{			System.out.println("door2 closed");		}	}}
3.Manager角色

Manager角色负责发布事件,Listener负责监听。

import java.util.Collection;import java.util.HashSet;import java.util.Iterator;public class DoorManager {		private Collection listeners;		public void addDoorListener(DoorListener listener){		if(listeners == null){			listeners = new HashSet();		}		listeners.add(listener);	}		public void removeListener(DoorListener listener){		if(listeners == null) return;		listeners.remove(listener);	}		public void fireDoorOpenEvent(){		if(listeners == null) return;		DoorEvent event = new DoorEvent(this,"open");		notifyListeners(event);	}		public void fireDoorCloseEvent(){		if(listeners == null) return;		DoorEvent event = new DoorEvent(this,"close");		notifyListeners(event);	}		private void notifyListeners(DoorEvent event) {        Iterator iter = listeners.iterator();        while (iter.hasNext()) {            DoorListener listener = (DoorListener) iter.next();            listener.doorEvent(event);        }    }}
4.测试类
public class Hello {	/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		DoorManager manager = new DoorManager();		manager.addDoorListener(new MyDoorListener1());		manager.addDoorListener(new MyDoorListener2());				manager.fireDoorOpenEvent();		System.out.println("I am in.");		manager.fireDoorCloseEvent();	}}
输出:

door1 opened.door2 opened.I am in.door1 closeddoor2 closed

转载地址:http://flsbb.baihongyu.com/

你可能感兴趣的文章
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>