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");
            });
        }
    }
  • 相关阅读:
    在前端眼中pc端和移动的开发区别
    两个对象的合并
    关于后台传来的json是含英文字母的string
    关于jquery的取消阻止默认事件
    练习:模态对话框
    JS之DOM节点增删改查与属性设置
    JS之DOM Event(事件)
    JS的DOM对象之DOM节点
    JS的history对象和location对象
    JS的BOM对象之window对象,利用window对象方法实现定时器
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13129586.html
Copyright © 2011-2022 走看看