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");
            });
        }
    }
  • 相关阅读:
    VSFTPD无法上传的解决方法
    linux下vsftpd的安装与配置说明
    长轮询
    采用handle消息机制实现轮播效果
    开启AsyncTask从网络加载图片
    使用异步httpclient框架做get,post提交数据
    使用post方式提交数据
    使用get方式提交数据
    json,xml,Html解析
    常用的有关文件上传下载的框架和图片加载框架
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129586.html
Copyright © 2011-2022 走看看