当前位置: 首页 > 编程日记 > 正文

【Quartz】实现接口封装化(二)

原文:【Quartz】实现接口封装化(二)

  前言  

通过昨天的努力终于算是了解Quartz这个定时器的简单使用,为了更深一步的了解和基于以后希望在项目中能使用他。所有我对他做了一下简单的封装操作,便于以后从新建立新工作和触发器,也方便写的代码不是那么的杂乱无章,所有就使用接口的方式进行了封装调用,算是个工厂模式的运用吧。哈哈。

  接口类(IExample):

废话就不多说了,想要实现简单就要有个统一的访问接口,然后让所有的任务去实现统一接口,这样我们只需要调用统一接口就知道了任务所包含的所有方法,管理也方便管理,添加任务只需要实现接口方法就可以了。听起来很单简哪。因为我是实现简单的例子所有我就实现了启动任务,返回当前调度器,暂停,修改四个方法:

public interface IExample{/// <summary>/// 启动当前任务/// </summary>/// <returns></returns>
        Task Run();/// <summary>/// 返回当前调度器/// </summary>/// <returns></returns>
        IScheduler GetScheduler();/// <summary>/// 暂停当前任务/// </summary>void Shutdown();/// <summary>/// 修改当前任务时间触发/// </summary>void ModiyTime();}

任务的继承:

还记得上一篇文章中我们的SimpleExample类吗?下面我们就首先让他继承IExample接口类:

    public class SimpleExample : BaseExample, IExample{#region 0.创建调度器public static ISchedulerFactory sf = new StdSchedulerFactory();public async Task<IScheduler> Ceart(){return await sf.GetScheduler();}#endregionpublic virtual async Task Run(){sched = await Ceart();//创建任务IJobDetail job = JobBuilder.Create<HelloJob>().WithIdentity("helloJob", "group1").Build();//创建触发器// DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);//定义触发规则ITrigger trigger = TriggerBuilder.Create().WithIdentity("trgTest", "group1")// .StartAt(runTime).WithCronSchedule("0/5 * * * * ?")     //5秒执行一次
                .Build();//将任务与触发器添加到调度器中await sched.ScheduleJob(job, trigger);//启动任务await sched.Start();}}
View Code

然后我又创建了很多工作组,你说什么没有 返回当前调度器,暂停,修改三个方法,没想到还是被你发现了。

父类实现:

由于在项目实际中我们回创建很多的任务组,任务不一样,但是基础方法都是通用的所有我们创建父类实现方法的公用。这样我们只需要注重我们的任务方法就行了。

    /// <summary>/// 扩展方法基类/// </summary>public class BaseExample{protected static  IScheduler sched = null;#region 1.返回当前调度器/// <summary>/// 返回当前调度器/// </summary>/// <returns></returns>public IScheduler GetScheduler(){return sched;}#endregion#region 2.暂停当前任务/// <summary>/// 暂停当前任务/// </summary>public void Shutdown(){if (sched != null){sched.Shutdown();}}#endregion#region 3.修改当前任务触发时间public void ModiyTime(){ITrigger trigger = TriggerBuilder.Create().WithIdentity("trg1", "group1")// .StartAt(runTime).WithCronSchedule("0/10 * * * * ?")     //10秒执行一次
               .Build();sched.RescheduleJob(trigger.Key, trigger);sched.Start();}#endregion}
View Code

这里创建好了之后,只需要在没添加一个任务继承此类即可实现了该类的方法,是不是这样看起来就简单多了。

下面就是我的大致层次:

写在这里也是给我一点记忆帮助,也为了刚接触的小伙伴能快速理解一下。东西不是很多也不很深很好理解。

相关文章:

怎么成为优秀的软件模型设计者?

作者&#xff1a;Scott Ambler著&#xff0c;乐林峰 译 本文选自&#xff1a;www.umlchina.com 2002年03月25日 我们期待自己成为一个优秀的软件模型设计者&#xff0c;但是&#xff0c;要怎样做&#xff0c;又从哪里开始呢&#xff1f; 将下列原则应用到你的软件工程中&…

1012 The Best Rank

思路&#xff1a;读入全部的数据之后&#xff0c;按照四个cmp函数对数组进行排序&#xff0c;给每生的4个科目的排名赋值&#xff0c;读入要检验的id后使用strcmp对数组中的id进行遍历(幸好这里数组大小和要检验的数目乘积不超过4万)&#xff0c;如果找到了相同id,调用写好的得…

SDWebImage使用——一个可管理远程图片加载的类库

SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。 将SDWebImage类库添加入工程时&#xff0c;一定注意需要添加MapKit.framework&…

EXECL使用技巧(转)

2007-03-18 09:07 一、求字符串中某字符出现的次数&#xff1a; 例&#xff1a;求A1单元格中字符"a"出现的次数&#xff1a; LEN(A1)-LEN(SUBSTITUTE(A1,"a","")) 二、如何在不同工作薄之间复制宏&#xff1a; 1、打开含有宏的工作薄&#xff0c…

微信小程序(canvas)画图保存到本地相册(wepy)

html标签部分 因为这个需要用户授权 所以需要使用button&#xff0c;画布使用的是canvas&#xff0c;这个可以参考小程序官方文档&#xff0c;代码如下 <button classbtn type"default" open-type"getUserInfo" tapexportImg>生成图片保存到本地&l…

1016 Phone Bills

目录 概述&#xff1a; 一些小的注意点 AC代码 概述&#xff1a; 这道题是我迄今做出来的最复杂的一道PAT了&#xff0c;该题被归类到排序专题下&#xff0c;其实还涉及到大量的字符串处理等别的我暂时也说不出的知识点。 排序函数我写了两个&#xff0c;1是cmp&#xff0…

C# GDI+ 简单绘图 (三) 仿浏览器截屏效果

感谢大家的支持,这几天从早忙到晚,一个字累呀!!!现在挺困的,但是又不习惯这么早睡觉,哎~~还是利用这个时间继续来写第三篇吧.  前两篇已经基本向大家介绍了绘图的基本知识.那么,我就用我们上两篇所学的,做几个例子&#xff0e;  我们先来做一个简单的----仿QQ截图,关于这个…

POJ 1236 Network of Schools(tarjan)

Network of SchoolsDescription A number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools to which it distributes software (the “receiving schools”). Note that if B …

如何设置网页自动刷新(JSP,JS,HTML)

http://blog.163.com/ylx282006126/blog/static/59772717201111685917664/ 转载于:https://www.cnblogs.com/liuzhuqing/p/7480284.html

1084 Broken Keyboard

两个注意的点 1.本题被归到散列专题下&#xff0c;但是由于是逐字符地映射到整形&#xff0c;可以直接把布尔型哈希数组的大小设置为ASCII的数量128&#xff0c;然后直接将字符作为数组下标(如果是字符串&#xff0c;才需要自己写一个哈希函数&#xff0c;将字符串映射到整形&…

Android提示框与通知的使用

1.通知 Android 3.0以前使用的方法 1 NotificationManager nm (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 2 Notification notification new Notification(R.drawable.dss, 3 "通知到了", Syste…

nginx安全日志分析脚本的编写

https://blog.csdn.net/nextdoor6/article/details/51914966

[转]笑死人的考试填空

高考完后又是中考&#xff0c;考题千奇百怪&#xff0c;答卷也五花八门。真佩服现在的学生啊&#xff0c;思维跳脱&#xff0c;天马行空&#xff0c;和我们那时候的循规蹈矩&#xff0c;差别太大了&#xff0c;呵呵。看一组语文试卷中的填空题&#xff1a;1.__________&#xf…

1033 旧键盘打字

1. 非常奇怪&#xff0c;明明都说了用下划线替代空格&#xff0c;但是用scanf读入的时候就会有1个测试点没通过&#xff0c;换成cin.getline就通过了 2.3种情况下对应的哈希表赋值为true。1是上来就赋值&#xff0c;2是对于大写字母把对应小写字母也赋值&#xff0c;这里注意直…

OLE 操作Excel 详解(转)

使用Excel模板进行报表的开发. 今年搞的Excel比较多&#xff0c;总结了一下&#xff0c;相信常用的操作包含的差不多了。 可以首先定义一个无内容的Excel报表模板文件. 通过Tcode SMW0 上传至SAP数据库中备用.(注: Web对象应该选择’WebRFC 应用程序的二进制数据’) 开发程序…

只需3分钟,就能轻松创建 一个SpreadJS的React项目

概述SpreadJS 纯前端表格控件 V11.2(SP2) 已经全面支持了 React 的拓展。接下来我们看下如何利用3分钟快速创建一个 SpreadJS 的 React 项目。1.新建React 项目&#xff08;耗时 1 Min&#xff09;直接运行&#xff1a;npx create-react-app react-spread-sheets还不清楚什么是…

1039 到底买不买

很典型的散列题&#xff0c;对于shop和eva有的珠子(即字符)&#xff0c;各开一个128长度的整形散列表计数&#xff0c;将字符作为下标读入。 然后从0~127进行遍历&#xff0c;看每个下标下两个散列表的数量&#xff0c;如果有shop<eva说明不买&#xff0c;但是遍历仍然要继…

什么是Linq

最近一直利用业余的时间来研究Linq&#xff0c;估计这样的文章在对于园子里很多牛人来说就有点小儿科了&#xff0c;前段时间写了一个Linq To Sql体验的小例子&#xff0c;感觉很简洁程序上操作体验不错&#xff0c;我写这些的文章目的是自我学习笔记的备用和查看&#xff0c;当…

OSS正式支持IPv6公测

背景 6月20日阿里云宣布全面支持IPv6&#xff0c; 随后阿里云开放对象存储OSS也逐步开始向用户公测。 公测步骤 正常使用IPv6服务&#xff0c;除了OSS端支持还需要客户端支持&#xff0c;我们做一些检查证明客户端具备访问 IPv6的能力&#xff0c;再使用OSS SDK或工具通过IPv6 …

C++中定义类的对象:用new和不用new的区别

Point p1; Point *p2new Point(); p1 由系统创建并释放&#xff0c;不用担心会出现内存泄露&#xff0c;但是生命期只有在本区域的大括号内&#xff0c;出了大括号就没用了。 P2 是指针&#xff0c;要自己释放&#xff0c;用不好很危险&#xff0c;用好了功能强大&#xff0c;…

1043 输出PATest

开一个长度为6的整型数组分别记录6个字符的数量&#xff0c;输出的时候条件是数组中至少存在一个不为零的元素 while(PATest[0]||PATest[1]||PATest[2]||PATest[3]||PATest[4]||PATest[5]){//当6个还有一个不为0 AC代码 #include<cstdio> #include<cmath> #inc…

[转载 js] YUI解决mouseout事件冒泡的办法

原文出处&#xff1a;http://design.alibaba-inc.com/?qnode/727&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&am…

adodb.RecordSet的属性和方法

为了更精确地跟踪数据&#xff0c;要用RecordSet组件创建包括数据的游标&#xff0c;游标就是储存在内存中的数据&#xff1a; rs Server.CreateObject("ADODB.RecordSet") rs.Open(sqlStr,conn,1,A) 注&#xff1a;A1表示读取数据&#xff1b;A3表示新增、改动或删…

给女友讲讲设计模式——适配器模式(JAVA实例)5

前言 有这样一个人&#xff0c;看到别人一个个开餐馆赚了好多钱&#xff0c;于是自己也很想在餐饮业这方面大展拳脚&#xff0c;他从别人那里学到了他们的理念&#xff0c;还学习到了他们真正开店的经验。不但如此&#xff0c;他还引进了除了吃饭意外其他的服务&#xff0c;例如…

1041 Be Unique

1.依旧是散列题&#xff0c;开一个整形的哈希数组bets[10010]来计数&#xff0c;最后数目为1的&#xff0c;也就是unique 2.注意&#xff0c;可能为1的不止一个&#xff0c;要输出第一个输入的unique&#xff0c;那么需要记录下读入的顺序&#xff0c;可以开辟一个数组inputs[…

SWT图像处理入门

SWT图像处理入门 Standard Widget Toolkit ( SWT &#xff0c;标准窗口小部件工具箱)&#xff0c;是在 Eclipse 平台上使用的窗口小部件工具箱&#xff0c;它能向开发者提供和本机平台一致的用户界面和比较稳定的性能&#xff0c;也提供了强大的图像处理功能。本文首先介绍 SWT…

MyEclipse中的快捷键

MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当前Editer CtrlK 快速定位到下一个 CtrlE 快速显示当…

CocoaPods原理(一)

CocoaPods介绍 CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods&#xff0c;可以定义自己的依赖关系 (称作 pods)&#xff0c;并且随着时间的变化&#xff0c;以及在整个开发环境中对第三方库的版本管理非常方便。 CocoaPods 背后的理念主…

1055 The World‘s Richest

开始的做法是&#xff0c;对于每一个case&#xff0c;都在整个person数组内进行遍历&#xff0c;把所有年龄符合要求的都放进一个临时数组&#xff0c;然后对临时数组进行排序&#xff0c;再根据要求的数目输出。但是这么做会有一个测试用例因为超时而通不过。 穷则思变。于是…

IOS时间传递机制简记

事件传递顺序&#xff1a;自定义View -- > UIview --> RootViewController --> UIWindow -->UIApplication -->Appdelegate -->nil 注&#xff1a; //分发事件&#xff0c;将当前的触摸事件分发给当前对象的下一个响应者 //如果当前对象处理了当前事件&am…