- 浏览: 135285 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
yaoneng:
谢谢~~不错~~
Eclipse格式化不换行 -
fys124974704:
没想过中文的条形码!
项目使用条形码 -
yangpanwww:
你好! 内容好像不支持中文。。有什么解决方案不
项目使用条形码 -
fys124974704:
Stone_eye 写道fys124974704 写道Ston ...
flowplayer学习 -
Stone_eye:
fys124974704 写道Stone_eye 写道哥们,想 ...
flowplayer学习
在java里面事件驱动是一种比较常见的设计模式,主要以awt控件为主!对于事件驱动我了解比较深刻的时候应该就是现在了,昨天刚刚听了一个高手将事件驱动,明白了一些道理,高手举的例子是一个小孩在睡觉,醒了之后,监护人去照顾他的场景模拟!
事件驱动标准的代码
package event.cn; import java.util.ArrayList; import java.util.List; /* 看护人 */ interface Keeper { public abstract void action(EventSource es); } class Father implements Keeper { @Override public void action(EventSource es) { System.out.println("Father do........"); } } class Mother implements Keeper { @Override public void action(EventSource es) { System.out.println("Monther do........"); } } class GrandFather implements Keeper { @Override public void action(EventSource es) { System.out.println("GrandFather do........"); } } class GrandMother implements Keeper { @Override public void action(EventSource es) { System.out.println("GrandMonther do........"); } } /* 被看护人 */ class Child implements Runnable { List<Keeper> keepers = new ArrayList<Keeper>(); EventSource es; public Child() { } public void addKeeper(Keeper k){ this.keepers.add(k); } public void wakeup() { for(Keeper k : this.keepers){ k.action(es); } } @Override public void run() { System.out.println("sleep ......"); try { new Thread().sleep(5000);// 5秒后醒来 this.wakeup(); } catch (InterruptedException e) { e.printStackTrace(); } } } /* 传递信息 */ class EventSource { private String something_msg; private Child child; public EventSource(String something_msg, Child child) { super(); this.something_msg = something_msg; this.child = child; } public String getSomething_msg() { return something_msg; } public void setSomething_msg(String something_msg) { this.something_msg = something_msg; } public Child getChild() { return child; } public void setChild(Child child) { this.child = child; } } public class EventTest { public static void main(String[] args) { Child child = new Child(); child.addKeeper(new Father()); child.addKeeper(new GrandFather()); new Thread(child).start(); } }
在听高手讲解之前,我只能写出这样的代码
package event.com; import java.util.ArrayList; import java.util.List; /* 看护人 */ abstract class Keeper{ public abstract void action(EventSource es); public void receive(EventSource es ){ List<Keeper> ks = es.getKs(); for(Keeper k : ks){ k.action(es); } } } /* 适配器 */ class KeeperAdapter extends Keeper{ @Override public void action(EventSource es) { } } class Father extends Keeper{ @Override public void action(EventSource es) { System.out.println("Father do........"); } } class Mother extends Keeper{ @Override public void action(EventSource es) { System.out.println("Monther do........"); } } class GrandFather extends Keeper{ @Override public void action(EventSource es) { System.out.println("GrandFather do........"); } } class GrandMother extends Keeper{ @Override public void action(EventSource es) { System.out.println("GrandMonther do........"); } } /* 被看护人 */ class Child implements Runnable{ EventSource es; public Child(EventSource es){ this.es = es; } public void wakeup(){ Keeper k = new KeeperAdapter(); k.receive(this.es); } @Override public void run() { System.out.println("sleep ......"); try { new Thread().sleep(5000);//5秒后醒来 this.wakeup(); } catch (InterruptedException e) { e.printStackTrace(); } } } /* 传递信息 */ class EventSource{ private String something_msg; private List<Keeper> ks; public EventSource(String something_msg, List<Keeper> ks) { super(); this.something_msg = something_msg; this.ks = ks; } public String getSomething_msg() { return something_msg; } public void setSomething_msg(String something_msg) { this.something_msg = something_msg; } public List<Keeper> getKs() { return ks; } public void setKs(List<Keeper> ks) { this.ks = ks; } } public class EventTest { public static void main(String[] args) { List<Keeper> ks = new ArrayList<Keeper>(); ks.add(new Father()); ks.add(new GrandFather()); EventSource es = new EventSource("test something",ks); Child child = new Child(es); new Thread(child).start(); } }
看上去两端代码的效果都是一样,但是前一个要比后一个要简练很多,而且设计也好很多!大家认为呢?
发表评论
-
送别自己
2011-09-30 16:55 767虽然我的blog已经转移到了163,但是我觉得我在离开卓博最后 ... -
尧总!再见了
2011-09-09 17:37 1010年初送走了,涂,刘两个老大,本以为我是第三个走的, ... -
一个人奋斗,相当lonely
2011-06-01 15:36 773涂总,浩董!你两个家伙真坏!居然跑了,把我一个人放在 ... -
mongdb学习
2011-05-13 15:58 1005mongdb 学习链接 : http://www.mongo ... -
我眼中的框架
2011-05-04 09:29 0我眼中的Struts Struts ... -
Linux 服务器软件安装日志
2011-04-26 09:37 8591.vsftpd 2.mysql 3.ulimit -n ... -
流媒体传输常识
2011-04-19 09:44 28流式传输定义 ... -
几种嵌入视频播放器插件的classid 值
2011-04-13 15:21 30一、Windows Media Player: 1、W ... -
commemorate 浩子's last day
2011-03-31 09:23 1006浩子,一个跟我共事1年半的同事!他的第一印象,我忘记了 ... -
纪念涂总最后一天上班
2011-02-21 16:04 1013涂总,一个跟我一起工作快3年的同事!第一次见他,我操 ... -
flowplayer学习
2011-01-07 16:12 4756今天要做一个定位播放的功能,播放的是swf文件。查看之 ... -
openejb使用感觉
2011-01-05 09:05 1397由于老系统用了jboss3.x的api,要改这个东西基本 ... -
Ajax,Flex,Silverlight,JavaFx 比较
2010-05-13 14:47 2186Ajax Flex Silverlight J ... -
三个月的plan
2010-03-30 14:36 921玩玩jquery和jquery ui,整合到我个blog!3个 ... -
开发应该注意的细节
2009-11-10 17:54 92web开发方式多 ... -
用JSF开发的感觉
2009-08-26 10:30 809用JSF开发感觉老怪了,每次改完页面,特别是JSF标签的控件都 ... -
web 中究竟谁只霸主?
2009-03-12 14:16 0现在web技术众多,到底谁是王道,谁是霸主,到 ... -
考试系统分析(随记)
2009-03-05 16:26 923公司要做一个考试系统,任务安排两个人,我和一个同事 ... -
搜索何时才能智能化
2009-01-11 09:49 892在搜索界,google是老大,因为只要是存在的网页 ... -
日志的体会
2009-01-07 09:08 635一个优雅的系统一定需要完整的日志(地球人都知道) ...
相关推荐
然后将事件驱动方式与以上两种程序处理方式对比,从代码复杂度、程序结构、开发过程、可拓展性等多方面的比较,得到 QuantumPlatform 量子框架结构简单,对软件开发平台要求不高,移植过程简单,事件驱动方式容易实现的...
单片机程序设计中运用事件驱动机制,单片机程序设计中运用事件驱动机制
EPC(事件驱动过程链)简介
事件驱动策略研究之十六:投资者关系活动事件驱动机会研究(27页).pdf
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
事件驱动模型实例详解(Java篇)
Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...
Java 开发中事件驱动模型的实例详解,属于转的
Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...
实现中,可以用时间代表银行活动的对象,用事件驱动来模拟这些活动,并以概率(随机数发生器)来描述预期的客户到达时间间隔和银行职员为一个顾客服务所需的时间。 在实验中,可改变参数(如银行窗口数、客户到达率...
C语言实现,用于嵌入式尤其单片机系统,小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,按键业务逻辑更清晰。c语言源代码;修订了原版的bug,更易用。...
EDA 是事件驱动架构,在面向服务架构(SOA)领域,一个比较重要的概念就是事件驱动 的体系结构 (EDA),英文全称为 Event-driven Architecture
实现的事件驱动机制,绑定对象与事件,通过成员方法响应事件,采用c++的方法实现,不依赖于任何平台
事件驱动 应用架构 应用 事件驱动 应用架构 应用
WindML事件驱动机制分析
Windows事件驱动机制.pdf
原创,引入事件驱动机制的程序框架,可以移植到所有单片机上,这是51移植版本。通过压力测试。
Java事件驱动程序设计相关代码 Java事件驱动程序设计相关代码
QP状态机 第2版 中文 嵌入式系统的事件驱动型编程技术第二版
libev 事件驱动