Java中事件处理
2016-05-15 00:00
399 查看
###事件处理
与c#中的委托相似,Java中事件的原型就是observer设计模式。
代码示例1:
代码示例2:
与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(); } }
相关文章推荐
- Java必须掌握的基础知识
- Java的封装
- Java抽象类和接口
- java增强版foreach
- Java数组使用
- java连接数据库
- springmvc小案例二
- JAVA生成随机数
- JAVA浮点数运算
- java读取excel文件
- 如何安装JDK
- 《Java编程思想》第四版读书笔记 第十章 内部类
- (二)JAVA使用POI操作excel
- Java图形用户界面编程
- Java AtomicInteger源码分析
- java GC的误区
- Spring介绍
- 第十七章javaI/O系统
- 2016 百度之星 Problem B --(大整数,斐波那契数列,java大法好)
- Java Proxy类及代理模式 探究