Java面向接口编程之命令模式实例详解

 更新时间:2019年09月25日 11:55:27   作者:cakincqm  
这篇文章主要介绍了Java面向接口编程之命令模式,结合实例形式详细分析了Java面向接口编程命令模式的定义、使用方法及相关操作注意事项,需要的朋友可以参考下

本文实例讲述了Java面向接口编程之命令模式。分享给大家供大家参考,具体如下:

一 点睛

某个方法需要完成某个行为,但这个行为的具体实现无法确定,必须等到执行该方法时才可以确定。

例如:假设有个方法需要遍历某个数组的数组元素,但无法确定在遍历数组时如何处理这些元素,需要在调用该方法时指定具体的处理行为。

对于这样一个需求,必须把处理行为作为参数传入该方法,这个处理行为用编程实现就是一段代码,可以考虑使用一个Command接口来定义一个方法,用这个方法来封装处理行为。

二 代码

1 Command接口

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

2 PrintCommand类

public class PrintCommand implements Command
{
  public void process(int[] target)
  {
   for (int tmp : target )
   {
     System.out.println("迭代输出目标数组的元素:" + tmp);
   }
  }
}

3 AddCommand类

public class AddCommand implements Command
{
  public void process(int[] target)
  {
   int sum = 0;
   for (int tmp : target )
   {
     sum += tmp;
   }
   System.out.println("数组元素的总和是:" + sum);
  }
}

4 ProcessArray类

public class ProcessArray
{
  public void process(int[] target , Command cmd)
  {
   cmd.process(target);
  }
}

5 CommandTest类

public class CommandTest {
  public static void main(String[] args)
  {
    ProcessArray pa = new ProcessArray();
    int[] target = {3, -4, 6, 4};
    // 处理数组,具体处理行为取决于匿名内部类
    pa.process(target,new PrintCommand());
    System.out.println("____________________");
    pa.process(target,new AddCommand());
  }
}

三 运行

迭代输出目标数组的元素:3
迭代输出目标数组的元素:-4
迭代输出目标数组的元素:6
迭代输出目标数组的元素:4
____________________
数组元素的总和是:9

四 类图

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java线程(Thread)四种停止方式代码实例

    Java线程(Thread)四种停止方式代码实例

    这篇文章主要介绍了Java线程(Thread)四种停止方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java自定义长度可变数组的操作

    Java自定义长度可变数组的操作

    这篇文章主要介绍了Java自定义长度可变数组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring容器获取Bean的9种方式总结

    Spring容器获取Bean的9种方式总结

    本文为大家整理汇总了常见的获取Bean的方式,并提供一些优劣分析,方便大家在使用到时有更好的选择,同时,也会为大家适当的普及和拓展一些相关知识,需要的可以参考一下
    2023-07-07
  • MyBatis-Plus 使用枚举自动关联注入

    MyBatis-Plus 使用枚举自动关联注入

    本文主要介绍了MyBatis-Plus 使用枚举自动关联注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 浅谈Spring Cloud下微服务权限方案

    浅谈Spring Cloud下微服务权限方案

    这篇文章主要介绍了浅谈Spring Cloud下微服务权限方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • java子线程解决获取主线程的request对象问题

    java子线程解决获取主线程的request对象问题

    这篇文章主要介绍了java子线程解决获取主线程的request对象问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 关于java中线程安全问题详解

    关于java中线程安全问题详解

    最近工作中遇到不少多线程问题,但自己一直对多线程的理解比较表层,所以深入研究了一番,下面这篇文章主要给大家介绍了关于java中线程安全问题的相关资料,需要的朋友可以参考下
    2021-11-11
  • Java编程实现A*算法完整代码

    Java编程实现A*算法完整代码

    这篇文章主要介绍了Java编程实现A*算法完整代码,简单介绍了a星算法,然后分享了完整测试代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • Spring MVC中使用Google kaptcha验证码的方法详解

    Spring MVC中使用Google kaptcha验证码的方法详解

    kaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的,下面这篇文章主要给大家介绍了关于Spring MVC中使用Google kaptcha验证码的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • Idea 编译并运行 Spark 3.1.1 源码的方法

    Idea 编译并运行 Spark 3.1.1 源码的方法

    这篇文章主要介绍了Idea 编译并运行 Spark 3.1.1源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11

最新评论