仓库控制系统(WCS)设计模式-模板模式
在自动化控制、任务调度或工作流系统中,任务通常可以被拆解为多个子任务(SubTask),这些子任务具有统一的行为模式:是否可以执行、以及如何执行。为了实现灵活、可扩展的任务调度机制,我们采用模板模式,定义一个子任务抽象类(SubTaskBase),通过继承它实现不同业务逻辑的子任务。子任务通过任务调度器调用。
·
在自动化控制、任务调度或工作流系统中,任务通常可以被拆解为多个子任务(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();
}
}
}
更多推荐
所有评论(0)