java命令模式轻松理解

情景:某个方法需要实现一个行为,但是这个行为的具体实现却无法确定,必须等到执行这个方法的时候才能确定。

考虑:这个方法不仅需要普通数据可以变化,而且方法执行体也需要改变,将“处理行为”作为一个参数传入该方法不失为一种方法

结论:但是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方法和处理行为的分离。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值