您的位置:首页 > 编程语言

跟王老师学接口(四):面向接口编程:命令模式

2016-04-20 13:24 197 查看
面向接口编程:命令模式

主讲教师:王少华 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口 教师 学习目标