您的位置:首页 > 编程语言 > Java开发

Java中事件处理

2016-05-15 00:00 399 查看
###事件处理
与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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: