MethodSchedulerNoExtends,无缝方法调度器

来源:互联网 发布:网络骑士txt下载 编辑:程序博客网 时间:2024/04/28 04:43

闲暇之余对之前做过的 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看看哈。
预计下一步要走@注解的方式

1 0
原创粉丝点击