MethodSchedulerNoExtends,无缝方法调度器
2016-03-24 17:34
232 查看
闲暇之余对之前做过的 MethodScheduler 再封装了一下,现在能够做到只需要在加入一行代码就可以进行方法的调度了,不需要像之前一样要继承,看起来更无缝一些。原理上还是使用了观察者模式,只是角色的功能稍微变动了一下,上一版的观察者是相当于只是一个观察者,现在变成每一个方法是都观察者。
代码也上传到了世界最大的同性交友网站,传送门:https://github.com/english207/MethodScheduler
这次我们先来解释一下观察者模式:
首先,这里的观察者是需要被通知的一方,观察者将自己注册给被观察者;
然后,当被观察者的触发条件到达时,将通知所有的观察者。
如下图:
图 (1):观察者向被观察者注册
图(2):当被观察者有事件触发时通知所有的观察者
被通知时对应代码段:
使用方式较之前是更方便了些:
更友好的嵌入代码里边,而不需要继承什么了
感兴趣的童鞋可以去GitHub看看哈。
预计下一步要走@注解的方式
代码也上传到了世界最大的同性交友网站,传送门:https://github.com/english207/MethodScheduler
这次我们先来解释一下观察者模式:
首先,这里的观察者是需要被通知的一方,观察者将自己注册给被观察者;
然后,当被观察者的触发条件到达时,将通知所有的观察者。
如下图:
图 (1):观察者向被观察者注册
图(2):当被观察者有事件触发时通知所有的观察者
被通知时对应代码段:
public void updateByCron(ISubject subject) { for (Object obj : mapJobList.keySet()) { List<String> excuted_methods = mapJobList.get(obj); for (String excuted_method : excuted_methods) { try { /** * 参数长度为0即要保障执行的方法 * 所以执行的方法一定是要无参 */ Method method = obj.getClass().getDeclaredMethod(excuted_method); new Thread(new MethodRunnable(method, obj)).start(); break; } catch (Exception e) { e.printStackTrace(); } } } }
使用方式较之前是更方便了些:
public class TestNoExtends { public void say() { System.out.println("say hello"); } public static void main(String[] args) { RegisterCronNoExtends.regWork(new TestNoExtends(), "say", "0/2 * * * * ? *"); } }
更友好的嵌入代码里边,而不需要继承什么了
感兴趣的童鞋可以去GitHub看看哈。
预计下一步要走@注解的方式
相关文章推荐
- 使用MediaStore.Images和 Cursor查询本地图片和图片缩略图
- sqlyog不用密码登陆(强制取消)
- 出差(二十九)
- oracle communities
- winform DataGridView 自适应列宽
- 两个很实用很方便的函数核心及用法{(lower_bound)+(max_element))~~
- 数组指针和指针数组
- Java this 关键字返回当前类实例变量
- DAC驱动
- 理解 组件-实体-系统 (ECS \CES)游戏编程模型
- C#中,使用正式表达式匹配获取所需数据
- 在SqlServer2008R2中,在一张表上加上insert、update、delete触发器(带游标)
- 树根
- 出差(二十八)
- android toolbar应用
- 详解Python使用simplejson模块解析JSON的方法
- CListCtrl用法简介和使用技巧
- 那一年我在学USB的PCB走线
- vsftpd文件传输 、 Samba共享服务
- 记录一个map-site.xml -Xmx 1000m 写成了 1000报错问题