您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
JUNIT源码探秘系列(下)
作者:网络转载 发布时间:[ 2013/4/16 14:34:04 ] 推荐标签:

JUNIT源码探秘(四):Junit代码分析之命令模式

 Junit在执行测试代码时,使用了命令模式,那么什么是命令模式,拿几个例子来说明下。

在《java与模式》书中,用一个很生动的例子来说明命令模式,“玉帝传美猴王上天”。在这我们也用这个例子说明下;这个事情整个过程如下:

玉帝传美猴王上天

整个过程有两个很明显的角色,玉帝和美猴王;仔细想想,这个玉帝不可能亲自教美猴王去吧?那么派谁去呢?通过简单分析,两外一个角色出现了,传递命令者(设计模式中叫调用者)宫中的跟随者或者太监等人,那么玉帝派太白金星;光太白金星自己去还不行,必须拿着玉帝的信物,比如圣旨、或者其他。那么到底是什么东西呢?这个要看玉帝给他什么东西,他拿什么东西;在仔细想想,那么玉帝给的东西可能装在一个盒子里或者信封里,具体什么东西都无所谓了,那么我们可以把这个盒子或者信封看做这个信物的接口,而盒子或者信物里的具体信物看做一个实现类。

通过这么一分析,那么我们可以看出整个命令模式中有五个对象:

传递信物的盒子或者信封

信封或者盒子中的具体信物

传递信息者太白金星

下达指令者玉皇大帝

执行命令着美猴王

在命令模式中刚好也有五个角色如下:

客户(Client)角色:创建一个具体的命令(ConcreteCommand)对象,并确定其接受者。这个角色当然是玉皇大帝了。

命令(Command)角色:声明给所有具体命令类的抽象接口,这是一个抽象角色,通常通过java的接口实现;这个对应到这个实例中可以看做是传递信物的盒子或者信封等

具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合,实现execute()方法,负责调用接受者的相应操作,execute()方法通常叫执行方法,对应到实例可以看做是盒子里的具体信物,比如圣旨、或者其他具有玉皇大帝省份标示的东西

请求者(Invoker)角色:负责调用命令对象执行请求,相关的测试方法叫做行动方法。在这个实例中太白金星扮演这个角色。

接受者(Receiver)角色:负责具体实施和请求一个请求。任何一个类都可以成为接受者,实施和执行请求的方法叫做行动方法。这个实例中这个角色自然是美猴王了。

       具体代码实现,先从接受者开始

         接受者(Receiver)

public class Receiver {

   public void doAction(){

      System.out.println("上天");

   }

}

命令(Command)

public interface Command {

   public void execute();

}

具体命令(ConcreteCommand)

public class ConcreteCommand implements Command {

   private Receiver receiver;

 

   public ConcreteCommand(Receiver receiver) {

      this.receiver = receiver;

   }

   public void execute() {

      receiver.doAction();

   }

}

 

请求者(Invoker)

public class Invoker {

   private Command command;

   public Invoker(Command command) {

      this.command = command;

   }

   public void doInvokerAction() {

      command.execute();

   }

}

客户(Client)

public class Client {

   public static void main(String[] args)

   {

      Receiver receiver = new Receiver();   

      Command command = new ConcreteCommand(receiver);

      Invoker invoker = new Invoker(command);

      invoker.doInvokerAction();

   }

}

上一页1234567下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd