MethodSchedulerNoExtends,无缝方法调度器

MethodScheduler进行了升级,现仅需一行代码即可实现方法调度,无需继承。采用观察者模式,每个方法均可作为观察者。已上传至GitHub,支持@注解方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值