go语言里比较好用的计划任务调度模块
2014-10-11 13:59
513 查看
在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(); } }
看上去两端代码的效果都是一样,但是前一个要比后一个要简练很多,而且设计也好很多!大家认为呢?
相关文章推荐
- go语言里比较好用的计划任务调度模块
- MySQL计划任务(事件调度器)(Event Scheduler)
- 几年前写的一个任务调度模块
- [原创] 我的生活我安排,我的调度我做主!——介绍一个 日程安排/工作计划/任务调度 的Scheduling组件。(二)
- MySQL计划任务(事件调度器)(Event Scheduler)
- MySQL计划任务(事件调度器)(Event Scheduler)
- MySQL计划任务(事件调度器)(Event Scheduler)
- Kylin任务调度模块
- Linux中的计划任务—Crontab调度重复执行的任务
- Servlet侦听器结合Java定时器 在Web工程中实现任务计划调度
- 如何在Tomcat服务器的工程中实现任务计划调度
- MySQL计划任务(事件调度器)(Event Scheduler)[转]
- 任务调度(二)——jdk自带的Timer 动态修改任务执行计划
- MySQL计划任务(事件调度器)(Event Scheduler)
- 使用C#开发计划任务调度服务
- go语言计划
- 模块和包.深入Celery之节点管理/任务调度/任务追踪
- Go语言同步与异步执行多个任务封装详解(Runner和RunnerAsync)
- LindDotNetCore~Scheduling任务调度模块的介绍
- 任务调度(二)——jdk自带的Timer 动态修改任务执行计划