1.Builder(建造者)模式
JobBuilder
DateBuilder
其他的Builder(TriggerBuilder、SchedulerBuilder等)
2.抽象工厂模式
ISchedulerFactory
DirectSchedulerFactory StdSchedulerFactory
IScheduler
StdScheduler RemoteScheduler[proxy]
3.IOC模式、可插拔式设计
//如果你没有自定义的loadHelper,那么就使用SimpleTypeLoadHelper loadHelper = ObjectUtils.InstantiateType<ITypeLoadHelper>(typeLoadHelperType ?? typeof(SimpleTypeLoadHelper));
4.AOP模式[切面编程]
scheduler.ListenerManager.AddJobListener(new CustomJobListener(),GroupMatcher<JobKey>.AnyGroup());
public class CustomJobListener : IJobListener { public string Name => "CustomJobListener"; /// <summary> /// 执行否决 /// </summary> /// <param name="context"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default) { await Task.Factory.StartNew(() => { Console.WriteLine("JobExecutionVetoed"); }); } /// <summary> /// 待执行 /// </summary> /// <param name="context"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default) { await Task.Factory.StartNew(() => { Console.WriteLine("JobToBeExecuted"); }); } /// <summary> /// 已执行 /// </summary> /// <param name="context"></param> /// <param name="jobException"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default) { await Task.Factory.StartNew(() => { Console.WriteLine("JobWasExecuted"); }); } }