在自动化控制、任务调度或工作流系统中,任务通常可以被拆解为多个子任务(SubTask),这些子任务具有统一的行为模式:是否可以执行、以及如何执行。为了实现灵活、可扩展的任务调度机制,我们采用模板模式,定义一个子任务抽象类(SubTaskBase),通过继承它实现不同业务逻辑的子任务。

public abstract class SubTaskBase
{
    /// <summary>
    /// 检查任务是否可以执行,如资源是否可用、依赖是否满足等。
    /// </summary>
    public abstract bool CanExecute();

    /// <summary>
    /// 执行子任务的具体逻辑。
    /// </summary>
    public abstract void Execute();

    /// <summary>
    /// 调度器统一调用的方法,封装流程控制
    /// </summary>
    public void Run()
    {
        if (!CanExecute())
        {
            Console.WriteLine($"[{GetType().Name}] 不满足执行条件,跳过。");
            return;
        }

        Console.WriteLine($"[{GetType().Name}] 开始执行...");
        Execute();
        Console.WriteLine($"[{GetType().Name}] 执行完成。");
    }
}

子任务通过任务调度器调用。

public class Scheduler
{
    public void RunTasks(Task task)
    {
        var subTasks=task.GetSubTaskList();
        foreach (var subTask in subTasks)
        {
            subTask.Run();
        }
    }
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐