命令模式

命令模式(Command)模式

构成:

a)客户角色:创建一个具体命令对象,并确定其接收者

package com.ebuair.pattern.command;
//客户角色:创建一个具体命令对象,并确定其接收者
public class Client {
	public static void main(String[] args) {
		Receiver receiver = new Receiver();
		Command command = new ConcreateCommand(receiver);
		Invoker invoker = new Invoker(command);
		invoker.invokerMehod();
	}
}

b)命令角色:声明一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个接口或者抽象类实现

package com.ebuair.pattern.command;
//命令角色:声明一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个接口或者抽象类实现
public interface Command {
	public void command();
}

c)具体命令角色:定义一个接收者和行为之间的弱耦合,实现execute方法,负责调用接收者的相应操作

package com.ebuair.pattern.command;
//具体的命令角色:定义一个接收者和行为之间的弱耦合,实现execute方法,负责调接收者的相应操作
public class ConcreateCommand implements Command {
	
	private Receiver receiver;
	public ConcreateCommand(Receiver receiver) {
		this.receiver = receiver;
	}
	@Override
	public void command() {
		this.receiver.receiverMethod();
	}
}

d)请求者角色:负责调用命令对象执行请求

package com.ebuair.pattern.command;
//命令请求者角色:负责调用命令对象执行请求
public class Invoker {
	private Command command;
	public Invoker(Command command) {
		this.command = command;
	}
	public void invokerMehod(){
		this.command.command();
	}
}

e)接收者角色:负责具体实施和执行一个请求

package com.ebuair.pattern.command;
//命令接收者角色:负责具体实施和执行一个请求
public class Receiver {
	public void receiverMethod(){
		System.out.println("receiver method invoked");
	}
}
应用:

Juint是一个测试framework,测试人员只需开发测试用例。然后把这些测试用例(TestCase)组成请求(可能是一个或者多个),发送到Junit,然后又Junit执行,最后报告详细测试结果。其中报错执行的时间,错误方法,错误位置等。这样测试用例的开发人员就不要知道Juint内部的细节,主要符合它定义的请求格式即可。从Juint的角度考虑,它并不需要知道请求TestCase的具体操作信息,仅把它当作一种命令来执行,然后把执行测试结构发给测试人员。这样就是Junit框架和TestCase的开发人员独立开来,使得请求的一方不必知道接收请求一方的详细信息,更不必知道是怎样被接收,以及怎样被执行的,实现系统的松耦合。

效果:

         实现请求的一方(TestCase开发)和调用一方(Juint)进行解耦

         使新的TestCase很容易加入,无需改变已有的类,只需继承TestCase类即可,方便了测试人员

         可以将多个TestCase进行组合成一个复合命令,你将看到TestSuit就是它的复合命令,当然它使用了Composite模式

         容易把请求的TestCase组合成请求队列,这样使接收请求的一方(Junit Framwork),容易决定是否执行请求,一旦发现测试用例失败或者错误可以立刻停止进行报告





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值