文档章节

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测试题,看看最近有进步吗?欢迎来学习

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

启示录是真的
05/24
0
0
Java NIO原理图文分析及代码实现

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

只想一个人静一静
2014/02/22
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部