package CommandModel;
/**
*
command模式的意图:将一个请求封装在一个对象,从而可用不同的
* 请求对客户进行参数化。它把请求和执行的
责任分割开,交由不同的对象
* 去处理。请求方不必知道命令接受方的
接口,也无须了解命令如何执行
* @author Administrator
* 例如:要编写一个taskExecutor任务执行类,执行
系统备份任务和执行
* 检查磁盘状态任务。但是,我们不希望这个类了解各种任务操作细节。我们的
* 目的就是把这个类和执行各种操作的方法解耦。
*建立一个任务接口
*/
public interface ITask {
public void execute();
}
===================================================================
package CommandModel;
public class BackupTask implements ITask{
@Override
public void execute() {
System.out.println("执行系统备份任务...");
}
}
===================================================================
package CommandModel;
public class DiskStatus implements ITask{
@Override
public void execute() {
System.out.println("执行检查磁盘状态任务...");
}
}
===================================================================
package CommandModel;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* 建立执行类
* @author Administrator
*
*/
public class TaskExecute {
private List<ITask> queue = new LinkedList<ITask>();
private static TaskExecute instance = new TaskExecute();
private TaskExecute(){
queue.add(new BackupTask());
queue.add(new DiskStatus());
}
//按顺序执行命令
public void performTasks(){
Iterator<ITask> it = queue.iterator();
while(it.
hasNext()){
ITask task = it.next();
task.execute();
}
}
public void clearTasks(){
queue.clear();
}
public static TaskExecute getInstance(){
return instance;
}
public static void main(String args[]){
TaskExecute execute = TaskExecute.getInstance();
execute.performTasks();
execute.clearTasks();
}
}