2

我有一个建筑问题。

假设我们有一个调度程序和许多子系统。其中一些子系统可以具有操作,应该能够由调度程序执行。

我们有两种方法来实现调度程序任务的注册。

一种方法是在每个子系统中都有一个名为 like 的方法RegisterSchedulerTasks,该方法将在应用程序启动期间由应用程序中的引导程序调用。在这个方法中,我们将调用类似这样的静态Scheduler类:

void Handler1(){
}

void Handler2(){
}

void RegisterSchedulerTasks()
{
  Scheduler.RegisterHandler( "E1", Handler1 );
  Scheduler.RegisterHandler( "E2", Handler2 );
}

"E1""E2"是任务的名称,将在调度程序配置中具有相应的设置。

另一种方法是使用例如 MEF。每个子系统都会导出一组ISchedulerTasks,它不会强制注册这些任务。在应用程序的另一端,我们SchedulerTasksRegistry将导入一组这些ISchedulerTasks。

在所有方法中,我们都会在 config 中有一个映射,其中将包含每个任务的调度时间线,在两种方法中都通过其名称来标识。

我倾向于第二种方法,但没有足够的论据。可能唯一的论点是第一种方法意味着子系统的更高静态耦合。

我是对的,第二种方法更好吗?这些方法的论据是什么?

4

1 回答 1

0

在这里,我将使用“责任链”模式。这种模式

'通过为多个对象提供处理请求的机会来避免将请求的发送者与接收者耦合。链接接收对象并沿链传递请求,直到对象处理它。

可以在此处找到使用此模式的示例。

我希望这有帮助。

于 2013-07-24T08:54:50.570 回答