Java接口的命令模式用法
来源:互联网 发布:免费淘宝客程序源码 编辑:程序博客网 时间:2024/04/29 05:33
在Java中,接口是一种特殊的存在,它体现的是一种规范和实现分离的设计哲学,充分利用接口可以极好地降低程序各个模块之间的耦合,从而提高系统的可扩展性和可维护性。基于这种规则,很多软件架构设计理念都倡导“面向接口编程”,而不是面向实现类编程,下面介绍的命令模式则是面向接口编程的一种。
考虑这一场景,摸个方法需要完成一个行为,但是这个行为举行的实现逻辑无法确定,必须等到执行该方法的时候才能确定,这个时候我们就可以采取面向接口变成,即制定一个接口,通过不同的实现该接口的类,实现同一个方法的不同实现逻辑。这也体现了面向对象的三大特征之一,多态性。
假设一个需求,我们需要遍历某个数组,但是并不知道在遍历该数组时该如何处理这些元素。首先,我们定义接口,在该接口定义一个抽象方法用于处理一个数组。
public interface Command {
void process(int[] target);
}
接下来,有两个Java实现Command接口,在两个类中分别实现了process方法,处理了不同的业务逻辑。
//打印出数组中的每个元素
public class PrintCommand implements Command{
public void process(int[] target){
for(int tmp:target){
System.out.print(tmp);
}
System.out.println();
}
}
//对数组元素进行求和并输出
public class AddCommand implements Command {
public void process(int[] target){
int sum = 0;
for (int i = 0; i < target.length; i++) {
sum += target[i];
}
System.out.println(sum);
}
}
我们再定义个需要处理数组的处理类,在这个类中包含process方法,在该方法中无法确定数组的处理行为,因此在该方法传入一个Command参数,用于对数组的处理。
public class ProcessArray {
public void process(int[] target,Command cmd){
cmd.process(target);
}
}
最后创建测试类:
public class CommandTest {
public static void main(String[] args){
ProcessArray processArray = new ProcessArray();
int[] arr = {1,2,3,4,5,6,7};
processArray.process(arr,new PrintCommand());
processArray.process(arr,new AddCommand());
}
}
输出结果是:
1234567
28
我们可以看出,通过传入不同的实现Command接口的类作为参数,产生不同的效果,也就是process方法和具体行为的分离,这样设计的好处是降低程序各个模块之间的耦合度,是一种好的变成模式。
- Java接口的命令模式用法
- JAVA接口的用法
- Interface 接口的命令模式
- 初学Java,面向接口编程,命令模式
- java Comparator 接口的用法
- java中接口的用法
- 看java设计模式感想①,谈谈自己对于接口用法的认识
- 初学Java,面向接口编程,命令模式(十八)
- 初学Java,面向接口编程,命令模式(十八)
- Java中单例模式的用法
- java中Comparator接口的用法
- Java中Cloneable接口的用法
- Java中Comparator接口的用法
- java.sql.DatabaseMetaData接口的用法
- Java中Enumeration接口的用法
- Java注释接口关键词@interface的用法
- java中Comparator接口的用法
- java 7 中 接口 的用法
- 超大背包(挑战编程之01背包)
- 普通的企业号体验下
- 为emlog中添加baidu分享功能
- 算法入门经典第二版 第三章数组和字符串 习题参考答案
- HTTP状态码(HTTP Status Code)
- Java接口的命令模式用法
- android 中Service中的绑定失败策略以及Service自己Destory策略
- python 模块相互import
- linux /proc 文件解析
- 你不知道的5个HTML5新功能
- 【Distribution】Java RMI - 3 - Spring对RMI的支持
- 跟着实例学习java多线程5-初识volatile变量
- pj杂项
- boost——正则表达式