- 浏览: 138110 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
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 824虽然我的blog已经转移到了163,但是我觉得我在离开卓博最后 ... -
尧总!再见了
2011-09-09 17:37 1084年初送走了,涂,刘两个老大,本以为我是第三个走的, ... -
一个人奋斗,相当lonely
2011-06-01 15:36 812涂总,浩董!你两个家伙真坏!居然跑了,把我一个人放在 ... -
mongdb学习
2011-05-13 15:58 1053mongdb 学习链接 : http://www.mongo ... -
我眼中的框架
2011-05-04 09:29 0我眼中的Struts Struts ... -
Linux 服务器软件安装日志
2011-04-26 09:37 9051.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 1055浩子,一个跟我共事1年半的同事!他的第一印象,我忘记了 ... -
纪念涂总最后一天上班
2011-02-21 16:04 1055涂总,一个跟我一起工作快3年的同事!第一次见他,我操 ... -
flowplayer学习
2011-01-07 16:12 4806今天要做一个定位播放的功能,播放的是swf文件。查看之 ... -
openejb使用感觉
2011-01-05 09:05 1438由于老系统用了jboss3.x的api,要改这个东西基本 ... -
Ajax,Flex,Silverlight,JavaFx 比较
2010-05-13 14:47 2242Ajax Flex Silverlight J ... -
三个月的plan
2010-03-30 14:36 958玩玩jquery和jquery ui,整合到我个blog!3个 ... -
开发应该注意的细节
2009-11-10 17:54 92web开发方式多 ... -
用JSF开发的感觉
2009-08-26 10:30 844用JSF开发感觉老怪了,每次改完页面,特别是JSF标签的控件都 ... -
web 中究竟谁只霸主?
2009-03-12 14:16 0现在web技术众多,到底谁是王道,谁是霸主,到 ... -
考试系统分析(随记)
2009-03-05 16:26 958公司要做一个考试系统,任务安排两个人,我和一个同事 ... -
搜索何时才能智能化
2009-01-11 09:49 933在搜索界,google是老大,因为只要是存在的网页 ... -
日志的体会
2009-01-07 09:08 673一个优雅的系统一定需要完整的日志(地球人都知道) ...
相关推荐
《基于STM32的事件驱动框架的应用》这篇文章探讨了如何改善传统嵌入式单片机开发中的问题,提出了一种采用事件驱动型层次式状态机的 QuantumPlatform 量子框架与STM32单片机结合的解决方案。STM32,全称基于ARM ...
### 事件驱动模型实例详解(Java篇) #### 1. 事件驱动模型概念解析 事件驱动模型是现代软件开发中一种关键的编程模式,尤其在图形用户界面(GUI)编程中占据核心地位。该模型围绕三个核心概念构建:事件源、侦听...
### 单片机程序设计中运用事件驱动机制 #### 摘要 本文探讨了如何在单片机程序设计中引入事件驱动机制,通过实际案例分析了这种方法的优点,特别是能够提高系统对多中断的实时响应能力,并降低多中断系统调试的难度...
在Java开发领域,事件驱动模型(Event-Driven Model)是一种广泛采用的设计模式,它通过响应外部事件来触发程序中的特定行为。本文将深入探讨Java中事件驱动模型的应用,特别是通过Swing框架的具体实例来解析这一...
EPC(事件驱动过程链)简介 EPC(事件驱动过程链)是一种强大的业务流程建模方法,旨在描述和分析复杂的商业业务流程。EPC 模型通过将业务过程中的静态资源(系统、组织、数据等)组织在一起,形成一个能够完成特定...
在IT领域,事件驱动编程是一种常见的编程模型,它主要用于构建响应用户输入、系统状态变化或者外部消息的应用程序。本文将详细解析如何利用数据结构中的队列来实现事件驱动编程,并结合给定的“银行排队”场景进行...
在电子工程和嵌入式系统领域,事件驱动的单片机程序设计是一种常见的编程模型,它使得硬件设备和软件能够高效地协同工作。基于事件驱动的设计理念,单片机能够实时响应外部或内部发生的特定事件,如传感器输入、按键...
标题中的“事件驱动51程序通用框架代码”指的是在51单片机上采用事件驱动编程模式的一个通用软件架构。51单片机是微控制器的一种,广泛应用于嵌入式系统设计,尤其适合初学者和低功耗应用。事件驱动编程是一种编程...
事件驱动机制是软件设计中的一种常见模式,尤其在嵌入式系统和实时操作系统中广泛应用。51单片机是一款常见的微控制器,广泛用于各种小型电子设备。本程序框架将事件驱动的概念引入到51单片机的编程中,旨在提高程序...
Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...
事件驱动编程(Event-Driven Programming,EDP)是一种编程模型,其中程序的执行由外部事件触发。在EDP中,程序不再按照预定的顺序执行,而是等待并响应各种事件,如用户输入、网络请求或定时器触发。这种模式常用于...
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
事件驱动型编程技术是嵌入式系统中常见的一种编程模型,尤其适用于实时性和响应速度要求高的应用。《嵌入式系统的事件驱动型编程技术 第二版》深入探讨了这一主题,为开发者提供了宝贵的理论知识和实践经验。 QP...
### 事件驱动体系结构概述 #### 一、引言与背景 在《事件驱动体系结构概述》这篇由Brenda M. Michelson撰写的报告中,她深入探讨了事件驱动架构(Event-Driven Architecture,简称EDA)的概念及其与服务导向架构...
在IT行业中,网络通信是至关重要的部分,而事件驱动编程模型是实现高效网络服务的一种常见方式。本主题将深入探讨“socketEventMode”,这是一种利用事件驱动机制进行Socket服务器与客户端通信的方法。我们将围绕...
Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...
### WindML事件驱动机制分析 #### 一、嵌入式系统与WindML的背景 随着多媒体信息技术、互联网技术、通信技术以及消费类电子产品智能化趋势的不断加强,嵌入式系统因其特有的优势——占用内存少、高性能、具有完全...
在探讨基于事件驱动会计信息系统的会计运用时,首先要明确会计信息系统的基本概念。会计信息系统是一套由人、数据、程序和信息处理设备组成,旨在收集、存储、处理、报告和解释组织的财务数据和相关信息的系统。而...
在编程领域,事件驱动机制是一种常见的软件设计模式,它基于观察者模式,使得程序能够对特定事件的发生作出反应。在本场景中,我们讨论的是如何使用C++来实现这种机制,而不依赖任何特定的平台库。C++本身并不内置...
事件驱动编程是一种编程范式,它基于事件(如用户操作、硬件状态变化或网络通信)的发生,通过回调函数或者事件监听器来响应这些事件。在测试领域,事件驱动框架允许我们更加精细地控制测试流程,使测试更接近实际...