0
点赞
收藏
分享

微信扫一扫

【设计模式-行为型模式】命令模式

朱小落 2022-02-01 阅读 63
命令模式

文章目录

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
举报

相关推荐

0 条评论