跟王老师学接口(四):面向接口编程:命令模式
2016-04-20 13:24
197 查看
面向接口编程:命令模式
掌握命令模式
一、命令模式
因为Java不允许代码块的单独存在,所以我们不可能将”处理行为“作为形参传入。
我们可以使用一个Command接口来定义一个方法,用这个方法来封装”处理行为“,然后将Command作为方法形参。
1、Command
来自为知笔记(Wiz)
主讲教师:王少华 QQ群号:483773664
学习目标理解面向接口编程的优势掌握命令模式
一、命令模式
(一)场景
假设你的Boss给你这样一个任务要你处理一个数组。但是没有告诉你,如何处理这个数组,是对其进行输出,还是对其排序。遇到这样的Boss很烦!!!(二) 分析
对于这样的需求,我们第一个想到的就是把数组作为方法的形参,但是我们是否可以把“对数组的处理行为“也作为一个方法的形参传入呢?因为Java不允许代码块的单独存在,所以我们不可能将”处理行为“作为形参传入。
我们可以使用一个Command接口来定义一个方法,用这个方法来封装”处理行为“,然后将Command作为方法形参。
(三)代码实现
1、Command
1234567 | public interface Command { /** * 用于封装对数组处理的行为 * @param target */ public void process( int [] target); } |
2、ProcessArray
这是一数组处理类,里面有一个方法process,这个方法无法确定处理的数据的处理行为,所以定义该方法时,使用了一个Command参数,这个Command参数负责对数组的处理行为。12345 | public class ProcessArray { public void process( int [] target,Command command){ command.process(target); } } |
3、PrintArrayCommand:打印数组
12345678 | public class PrintArrayCommand implements Command{ @Override public void process( int [] target) { for ( int i = 0 ; i < target.length; i++) { System.out.println(target[i]); } } } |
4、Test
12345678 | public class Test { public static void main(String[] args) { int [] arr = { 2 , 13 , 212 , 3 , 34 }; Command command = new PrintArrayCommand(); ProcessArray processArray = new ProcessArray(); processArray.process(arr, command); } } |
(四)总结
通过一个Command接口,就实现了让ProcessArry类和具体”处理行为‘的分离。Command接口也没有提供真正的处理,只有等到需要调用ProcessArray对象的process方法时,才真正传入一个Command对象,才能确定对数组的处理行为。来自为知笔记(Wiz)
相关文章推荐
- fastjson处理接口时的一个问题
- 局域网与广域网接口标准
- RJ-45接口信号定义
- DVI 视频接口图文解析
- 如何设置域名接口
- 通过C#实现自动售货机接口
- C#中IEnumerable接口用法实例分析
- C#中实现判断某个类是否实现了某个接口
- C#隐式/显示实现接口方法详解
- C#实现两接口中同名方法实例分析
- 详解C#中的接口属性以及属性访问器的访问限制
- C#中的ICustomFormatter及IFormatProvider接口用法揭秘
- C#接口实现方法实例分析
- 基于C# 中可以new一个接口?的问题分析
- C#抽象类和接口的区别分析
- 详细解读PHP中接口的应用
- php单一接口的实现方法
- C#中类与接口的区别个人总结
- C语言接口与实现方法实例详解
- 学习JavaScript设计模式(接口)