Java命令模式轻松认识
发布时间:2021-11-25 17:47:03 所属栏目:教程 来源:互联网
导读:情景:某个方法需要实现一个行为,但是这个行为的具体实现却无法确定,必须等到执行这个方法的时候才能确定。 考虑:这个方法不仅需要普通数据可以变化,而且方法执行体也需要改变,将处理行为作为一个参数传入该方法不失为一种方法 结论:但是Java目前的jdk
|
情景:某个方法需要实现一个行为,但是这个行为的具体实现却无法确定,必须等到执行这个方法的时候才能确定。 考虑:这个方法不仅需要普通数据可以变化,而且方法执行体也需要改变,将“处理行为”作为一个参数传入该方法不失为一种方法 结论:但是Java目前的jdk1.6版本不想Ruby语言支持袁旭传入一个代码块作为参数 如何实现这种呢,假如一个方法需要遍历一组数组,但是无法确定在遍历的时候如何处理这些数据,需要在调用该方法时指定具体的做法: interface: public interface Command { //由于jdk1.6中不允许传入一个代码块作为参数, //这里定义一个方法来封装 处理过程 void process(int [] target); } 两个处理过程接口实现类: public class AddCommand implements Command { @Override public void process(int[] target) { int sum=0; for(int k:target){ sum+=k; } System.out.println("数组和是:"+sum); } } public class PrintCommand implements Command { @Override public void process(int[] target) { for(int k :target){ System.out.println("依次输出数组元素:"+k); } } } ProcessArray(处理类): public class ProcessArray { public void process(int [] target,Command cmd){ cmd.process(target); } } TestCommand(测试类): public class TestCommand { public static void main(String [] args){ ProcessArray pra=new ProcessArray(); int [] target={1,2,3,4,5}; //处理行为依赖于PrintCommand pra.process(target, new PrintCommand()); System.out.println("******"); //处理行为依赖于AddCommand() pra.process(target, new AddCommand()); } 对于上面两个Print和AddCommand实现类,就是为了实现方法process(int 【】 target),而该方法也就是处理类ArrayProcess里process方法的处理行为。 这样,就实现process方法和处理行为的分离。 ![]() (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



浙公网安备 33038102330459号