我在Tasks.xml中描述了约100个任务。每个任务都有一些字段,如名称,索引和优先级。在程序中,最终每个任务都由类任务表示。我需要添加为每个任务运行处理程序的能力(有15种不同的可能处理程序,有些是常见的)。 我决定在xml中为每个任务添加一个Handler attriblute:
<Task Name="Task1" Handler="TaskHandler_A">
并向Class Task添加一个名为Handler属性值的方法:
public class Task
{
string name;
// some more fields
void TaskHandler_A()
{
}
// some more handlers
//
void TaskHandler_P()
{
}
}
我应该在程序中运行以在某个时刻处理此任务(每个处理程序方法大约有10个代码行)。这应该可以解决问题,但是由于代码公开了处理程序的名称,因此它看起来不够通用。是否有更优雅/通用的解决方案满足此要求,这样我就不需要在代码中公开Handler名称了?
答案 0 :(得分:0)
一种方法是仅使用带有one method
语句的switch
:
void handler(String handler){
switch (handler){
case "TaskHandler_A":
//relevant code for handler TaskHandler_A
break;
case "TaskHandler_B":
//relevant code for handler TaskHandler_B
break;
// other cases
}
}
同样为这种情况制作通用方法取决于事件处理代码,如果它们有多少共同代码或者您希望处理代码完成什么