zoukankan      html  css  js  c++  java
  • Quartz.Net系列(三):解读Quartz.Net源码领略设计模式在其中的应用

    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");
            });
        }
    }
  • 相关阅读:
    Android开发之旅1:环境搭建及HelloWorld
    程序员学习视频教程汇总
    Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL
    查看控制层从前端传来的参数
    PostMethod和GetMethod用法
    @Transient的用法和格式化页面展示的数据格式
    修改hosts
    javascript:history.go(-1)的使用
    JsonConfig的jsonConfig.setExcludes的用法
    验证登录超时,在登录后跳转超时时的页面
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129586.html
Copyright © 2011-2022 走看看