命令模式

一需求背景

用命令模式实现打印出数组各个元素的值以及各元素之和。

 

二代码示例

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

 

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

 

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

 

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

 

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

三运行结果

迭代输出目标数组的元素:3

迭代输出目标数组的元素:-4

迭代输出目标数组的元素:6

迭代输出目标数组的元素:4

------------------

数组元素的总和是:9

 

四结果分析

该代码是用命令模式实现的,在该需求中类ProcessArray中的process方法需要分别完成两个行为(打印或求和),但这两个行为的具体实现无法确定,必须等到执行该方法时才可以确定。具体说来:process方法需要遍历某个数组的元素,但无法确定在遍历数组时如何处理这些元素,需要在调用该方法时指定具体的处理行为。

对于PrintCommand和AddCommand两个实现类而言,实际有意义的部分就是process(int[] target)方法,该方法的方法体就是传入ProcessArray类里的process()方法的"处理行为",通过这种方式就可实现process()方法和"处理行为"的分离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值