文章目录
1、前言
命令模式是某个方法确定了要处理的数据,但是怎么处理还不确定,要等调用时才能确定,此时我们就可以把处理的命令抽象出来,定义成一个 Command 接口,具体的处理 XXXCommand 类实现该接口以及完善处理方法。再定义一个通用的处理类,处理的数据和处理方法都通过参数传递给通用处理类,这样就有点类似于我给一个手下发送一个文件和命令,让他去完成文件的相关操作。
2、实例
数组处理命令接口【抽象命令】
public interface Command {
/**
* 数组处理
* @param target
*/
void process(int[] target);
}
命令接口实现类,打印数组【具体命令1】
public class PrintCommand implements Command {
@Override
public void process(int[] target) {
System.out.println(Arrays.toString(target));
}
}
命令接口实现类,数组求和【具体命令2】
public class SumCommand implements Command {
@Override
public void process(int[] target) {
int sum = 0;
for (int i : target) {
sum += i;
}
System.out.println("sum = "+sum);
}
}
通用数组处理类,通过传递目标数组和具体处理类可完成相应操作
public class ProcessArray {
/**
* process array function
* @param array
* @param command
*/
public void process(int[] array,Command command){
command.process(array);
}
}
测试:
public class Test {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
ProcessArray processArray = new ProcessArray();
processArray.process(arr,new PrintCommand());
processArray.process(arr,new SumCommand());
}
}
// 结果
// [1, 2, 3, 4]
// sum = 10