命令模式指的是,我们要做一件事情,但是在事前我们都不知道这件事前如何去做,只有在事情真正发生的时候才能确定如何去做,比如现在要处理一个数组,但是只有当拿到具体数组之后,才知道到底要如何处理这个数组,有可能每个数组的处理方式都不一样
如下:
首先定义一个处理数组的接口,该接口只定义了一个处理数组的方法,但是并为说明如何处理数组
package com.yf.designpattern.command;
public interface Command {
void process(int[] target);
}
上面这个类只是说了,要处理数组,但是没有说明具体如何处理,下面在定义一个类,每个数组都能通过下面这个类进行处理,该类把所有的数组都交个上面这个接口去处理
package com.yf.designpattern.command;
public class ProcessArray {
public void each(int[] target,Command cmd){
cmd.process(target);
}
}
下面在写一个测试类,注意下面这个类,这个测试类里面需采用java中的匿名类的方式来满足对不同数组采用不同处理方式的需求
package com.yf.designpattern.command;
public class TestCommand {
/**
* @param args
*/
public static void main(String[] args) {
ProcessArray pa = new ProcessArray();
int[] target = { 3, 4, 5, 90, 43, 4, 2, 2 };
int[] target2 = { 9, 7, 5, 10, 23, 4, 5, 2 };
pa.each(target, new Command() {
@Override
public void process(int[] target) {
for (int tmp : target) {
System.out.println(tmp);
}
}
});
pa.each(target2, new Command() {
@Override
public void process(int[] target) {
int sum = 0;
for (int j = 0; j < target.length; j++) {
sum += target[j];
}
System.out.println("the array sum is:" + sum);
}
});
}
}
输出结果如下:
3
4
5
90
43
4
2
2
the array sum is:65
从上面代码可以看出,在实际使用时,我们可以根据不同的数组,实例化一个匿名的command,该类实现了command接口的process方法,从而实现采用不同方式处理不同数组的需求,通过查看该上述代码的class文件可以发现,编译之后,会多生成两个名为TestCommand$1和TestCommand$2的class文件,通过反编译查看,这两个类都实现了command接口,而且都有不同的process实现,跟在测试类里面实现的process方法一致,所以可以看出,所谓的匿名类并不是一致无名,编译之后,java会给他们命名的,这个跟内部类完全一致(其实上面也就是内部类)
分享到:
相关推荐
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...
### 深入浅出设计模式之命令模式 #### 前言 设计模式作为软件工程中的重要组成部分,为开发者提供了解决常见问题的有效途径。在众多设计模式中,命令模式是一种行为型设计模式,它把请求封装成对象,以便使用不同的...
【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...
**Java设计模式之命令模式详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在Java编程中,命令模式广泛应用于解耦请求的发送者...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...
命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...
Java设计模式之命令模式/Java函数式编程 笔记
命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...
命令模式是一种行为设计模式,它的主要目的是将请求封装为一个对象,以便支持可撤销的操作、参数化不同命令以及将命令的执行与请求者解耦。在23种经典设计模式中,命令模式因其灵活性和实用性而被广泛使用。 在命令...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于降低系统之间的耦合度,提高灵活性...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以按照以下步骤进行: 1. **定义...
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...