文档章节

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 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
java NIO原理及通信模型

Java NIO是在jdk1.4开始使用的,它既可以说成“新IO”,也可以说成非阻塞式I/O。下面是java NIO的工作原理: 由一个专门的线程来处理所有的IO事件,并负责分发。 事件驱动机制:事件到的时候...

柳哥
2015/02/15
0
4
Java NIO原理图文分析及代码实现

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

只想一个人静一静
2014/02/22
0
1
做几道基础的Java测试题,看看最近有进步吗?欢迎来学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

启示录是真的
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

smart-doc特殊功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
0
0
JavaEE——Junit

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Junit Junit又名单元测试,Junit是用来测试Jav...

凯哥学堂
昨天
0
0
读《美丽新世界》

一、背景 十一国庆节从重庆回深圳的时候,做得绿皮车,路上看了两本书:李笑来的《韭菜的自我修养》和禁书《美丽新世界》。 上篇文章已经分享了 读《韭菜的自我修养》,这篇文章来记录一下《...

tiankonguse
昨天
0
0
archlinux下基于Jenkins,docker实现自动化部署(持续交互)

本文永久更新地址:https://my.oschina.net/bysu/blog/2250954 【若要到岸,请摇船:开源中国 不最醉不龟归】 -----------------------------------第一部分Jenkins的安装与使用-----------...

不最醉不龟归
昨天
0
0
Spark Parquet file split

在实际使用 spark + parquet 的时候, 遇到了两个不解的地方: 我们只有一个 parquet 文件(小于 hdfs block size), 但是 spark 在某个 stage 生成了4个 tasks 来处理. 4个 tasks 中只有一个 ta...

Aaaaaaaron
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部