命令模式

来源:互联网 发布:支付宝生成器软件 编辑:程序博客网 时间:2024/06/06 11:01

假如某个方法需要完成一个功能,完成这个功能的大部分步骤已经确定了,但可能少量具体步骤无法确定,必须等到执行该方法时才可确定。这个方法不仅要求参数可以变化,甚至要求方法执行的代码也可以变化,需要把“处理行为”作为一个参数传入方法。所以实际传入该方法的应该是一个对象,该对象通常是某个接口的匿名实现类的实例,该接口通常被称为命令接口,这种设计方式也被称为命令模式。下面的程序定义一个ProcessArray类,该类里包含一个each()方法用于处理数组。

public class ProcessArray{// 定义一个each()方法,用于处理数组,public void each(int[] target , Command cmd){cmd.process(target);}}

下面定义个Command参数。

 public interface Command{// 接口里定义的process()方法用于封装“处理行为”void process(int[] target);}

下面用一个测试类来测试。

public class CommandTest{public static void main(String[] args){ProcessArray pa = new ProcessArray();int[] target = {3, -4, 6, 4};// 第一次处理数组,具体处理行为取决于Command对象pa.each(target , new Command(){// 重写process()方法,决定具体的处理行为public void process(int[] target){for (int tmp : target ){System.out.println("迭代输出目标数组的元素:" + tmp);}}});System.out.println("------------------");// 第二次处理数组,具体处理行为取决于Command对象pa.each(target , new Command(){// 重写process()方法,决定具体的处理行为public void process(int[] target){int sum = 0;for (int tmp : target ){sum += tmp;}System.out.println("数组元素的总和是:" + sum);}});}}

执行结果。





0 0
原创粉丝点击