【发布时间】:2019-06-13 05:25:51
【问题描述】:
我有一个方法需要执行多个任务才能完成更大的任务。每个任务大概有 20-30 行代码,所以我决定每个任务都有一个类。
public void bigTask() {
TaskProcessor executor = new TaskProcessor();
executor.addTask(new Task1(some arguments here));
executor.addTask(new Task2(some other arguments here));
executor.addTask(new Task2(some other arguments here));
executor.run();
}
public interface Task {
public void execute();
}
public class Task1 implements Task {
@Override
public void execute() {
//Some code here
}
}
public class Task2 implements Task {
@Override
public void execute() {
//Some other code here
}
}
public class Task3 implements Task {
@Override
public void execute() {
//Some other code here
}
}
public class TaskProcessor implements Serializable {
private List<Task> tasksList;
public TaskProcessor () {
this.tasksList = new ArrayList<Task>();
}
public void addTask(Task task) {
this.tasksList.add(task);
}
public void execute() {
for (Task task : this.tasksList) {
task.execute();
}
}
}
对我来说,这段代码就像一个命令模式,但我不确定,因为每个任务的参数类型不同,不像传统的命令模式。
您认为这可以被视为命令模式实现吗? 您认为这种方法可以拆分大方法吗?
谢谢
【问题讨论】:
-
是的,这看起来可能适合命令模式。
Task接口的全部意义在于您不必担心实现。您只需要知道每个Task实现实际上都有一个execute()方法。 -
您可以让各个任务将自己注册到传递给他们的 TaskExecutor,例如public Task1(TasksExecutor executor){executor.addTask(this);}
标签: java design-patterns command-pattern