您的位置:首页 > 其它

MethodSchedulerNoExtends,无缝方法调度器

2016-03-24 17:34 232 查看
闲暇之余对之前做过的 MethodScheduler 再封装了一下,现在能够做到只需要在加入一行代码就可以进行方法的调度了,不需要像之前一样要继承,看起来更无缝一些。原理上还是使用了观察者模式,只是角色的功能稍微变动了一下,上一版的观察者是相当于只是一个观察者,现在变成每一个方法是都观察者。

代码也上传到了世界最大的同性交友网站,传送门: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看看哈。

预计下一步要走@注解的方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: