文档章节

Java中事件处理

李茂冉
 李茂冉
发布于 2016/05/15 14:22
字数 290
阅读 6
收藏 0

###事件处理 与c#中的委托相似,Java中事件的原型就是observer设计模式。

代码示例1:

interface WaterOkListener{
	void actionWaterOk();	
}

class Water{
	java.util.List<WaterOkListener>waterOk =new java.util.ArrayList<WaterOkListener>();
	
	//绑定事件
	public void addWaterOkListener(WaterOkListener sender){
		waterOk.add(sender);
	}
	//取消绑定
	public void removeWaterOkListener(WaterOkListener e){
		waterOk.remove(e);
	}

	//触发事件
	public void waterOk(){
		
		System.out.println("水开了!");
		for(int i=0;i<waterOk.size();i++){
			waterOk.get(i).actionWaterOk();	
		}	
	}
}
class Zhangsan implements WaterOkListener{

	public void actionWaterOk(){
		System.out.println("张三去提水去了!!");	
	}
}
class Lisi implements WaterOkListener {
	
	public void actionWaterOk(){
		System.out.println("李四去提水去了!");	
	}	
}

class waterTest{
	public static void main(String[]args){
		Lisi f=new Lisi();
		Zhangsan z=new Zhangsan();
		Water w=new Water();
		w.addWaterOkListener(f);
		w.addWaterOkListener(z);
		w.waterOk();	
	}
}

代码示例2:

package java事件;

import java.util.*;


//最简单的事件

interface WakenUpListener
{
	void actionWakenUp();
}

class Child
{
	private boolean wakeUp = false;
	private List<WakenUpListener> wakenUp = new ArrayList<WakenUpListener>();

	public void addActionListener(WakenUpListener w)
	{
		wakenUp.Add(w);
	}
	public void removeActionListener(WakenUpListener e)
	{
		wakenUp.Remove(e);
	}

	public void wake()
	{
		System.out.println("小孩醒了!");
		for (int i = 0; i < wakenUp.size(); i++)
		{
			wakenUp.get(i).actionWakenUp();
		}
	}
}

class Father implements WakenUpListener 
{
	public void actionWakenUp()
	{
		System.out.println("喂小孩东西吃!");
	}
}
class GrandFather implements WakenUpListener 
{
	public void actionWakenUp()
	{
		System.out.println("抱小孩出去玩!");
	}
}
class Dog implements WakenUpListener
{
	public void actionWakenUp()
	{
		System.out.println("汪汪汪...");
	}
}


class test
{
	public static void main(String[] args)throws Exception 
	{
		Dog d = new Dog();
		Father f = new Father();
		GrandFather g = new GrandFather();
		Child c = new Child();
		c.addActionListener(d);
		c.addActionListener(f);
		c.addActionListener(g);
		Thread.sleep(200);
		c.wake();
		c.removeActionListener(d);
		c.wake();
	}
}

© 著作权归作者所有

共有 人打赏支持
李茂冉
粉丝 5
博文 103
码字总数 59256
作品 0
东城
高级程序员
私信 提问
Java NIO原理图文分析及代码实现

Java IO 在Client/Server模型中,Server往往需要同时处理大量来自Client的访问请求,因此Server端需采用支持高并发访问的架构。一种简单而又直接的解决方案是“one-thread-per-connection”。...

只想一个人静一静
2014/02/22
0
1
Java NIO原理 图文分析及代码实现

Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术...

囚兔
2015/04/29
0
0
Java NIO原理图文分析及代码实现

前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baik...

SunnyWu
2014/11/05
0
1
android的frameworks层键盘事件处理流程分析

事件处理流程 1)InputManager负责读取事件并把事件送到frameworks的java层 2)WindowManagerService里会有一个InputMonitor类来监听事件变化并做相应的分发处理。 3)在WindowManagerService会...

鉴客
2011/11/13
15.3K
0
Java ME SDK 3.0.5 发布

新的Java ME SDK已经正式发布了。 Java ME曾是Sun的一个巨大成功,不过近些年来Java ME技术一直徘徊不前。今年七月份,在经历一番人事调整后,Java ME SDK团队正式宣布回归,并承诺将很快推出...

老枪
2011/11/21
1K
12

没有更多内容

加载失败,请刷新页面

加载更多

Iris框架

1、安装iris: $ go get -u github.com/kataras/iris 2、golang iris web项目热重启 # 安装rizla包 $ go get -u github.com/kataras/rizla # 热重启方式启动iris项目 $ rizla main.go......

Liens
15分钟前
3
0
初探sentinel实践思考

简单说下, sentinel的优势: 友好的控制面板,支持实时监控 多种限流。支持QPS限流,线程数限流,多种限流策略,如:直接拒绝,匀速模式(漏斗),冷启动(如设置限制1000,延迟10秒,那第一...

爱吃大肉包
17分钟前
4
0
转:MongDB分页查询

找到了一篇关于MongDB分页查询的博客 https://www.cnblogs.com/wslook/p/9275861.html

_liucui_
17分钟前
1
0
《边缘云计算技术及标准化白皮书》

12月12日,第八届中国云计算标准和应用大会在北京隆重召开,工业和信息化部党组成员,总工程师张峰先生,中国工程院副院长陈左宁女士,中国工程院院士沈昌祥先生,中国电子技术标准化研究院院...

阿里云官方博客
23分钟前
1
0
网站安全公司对于网站逻辑漏洞的修复方案分享

在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭泄露,包括手机号,姓名...

网站安全
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部