加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

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方法和处理行为的分离。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读