亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUNIT源碼探秘系列(下)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/4/16 14:34:04 ] 推薦標簽:

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

 Junit在執(zhí)行測試代碼時,使用了命令模式,那么什么是命令模式,拿幾個例子來說明下。

在《java與模式》書中,用一個很生動的例子來說明命令模式,“玉帝傳美猴王上天”。在這我們也用這個例子說明下;這個事情整個過程如下:

玉帝傳美猴王上天

整個過程有兩個很明顯的角色,玉帝和美猴王;仔細想想,這個玉帝不可能親自教美猴王去吧?那么派誰去呢?通過簡單分析,兩外一個角色出現(xiàn)了,傳遞命令者(設(shè)計模式中叫調(diào)用者)宮中的跟隨者或者太監(jiān)等人,那么玉帝派太白金星;光太白金星自己去還不行,必須拿著玉帝的信物,比如圣旨、或者其他。那么到底是什么東西呢?這個要看玉帝給他什么東西,他拿什么東西;在仔細想想,那么玉帝給的東西可能裝在一個盒子里或者信封里,具體什么東西都無所謂了,那么我們可以把這個盒子或者信封看做這個信物的接口,而盒子或者信物里的具體信物看做一個實現(xiàn)類。

通過這么一分析,那么我們可以看出整個命令模式中有五個對象:

傳遞信物的盒子或者信封

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

傳遞信息者太白金星

下達指令者玉皇大帝

執(zhí)行命令著美猴王

在命令模式中剛好也有五個角色如下:

客戶(Client)角色:創(chuàng)建一個具體的命令(ConcreteCommand)對象,并確定其接受者。這個角色當然是玉皇大帝了。

命令(Command)角色:聲明給所有具體命令類的抽象接口,這是一個抽象角色,通常通過java的接口實現(xiàn);這個對應(yīng)到這個實例中可以看做是傳遞信物的盒子或者信封等

具體命令(ConcreteCommand)角色:定義一個接收者和行為之間的弱耦合,實現(xiàn)execute()方法,負責調(diào)用接受者的相應(yīng)操作,execute()方法通常叫執(zhí)行方法,對應(yīng)到實例可以看做是盒子里的具體信物,比如圣旨、或者其他具有玉皇大帝省份標示的東西

請求者(Invoker)角色:負責調(diào)用命令對象執(zhí)行請求,相關(guān)的測試方法叫做行動方法。在這個實例中太白金星扮演這個角色。

接受者(Receiver)角色:負責具體實施和請求一個請求。任何一個類都可以成為接受者,實施和執(zhí)行請求的方法叫做行動方法。這個實例中這個角色自然是美猴王了。

       具體代碼實現(xiàn),先從接受者開始

         接受者(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下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产欧美日韩视频怡春院 | 日韩精品一区二区三区中文版 | 午夜免费福利网站 | 欧美日韩一卡二卡 | 综合自拍亚洲综合图区美腿丝袜 | 日本免费福利视频 | 亚洲伦理影院 | 天干天干啦夜天天天视频 | 一级毛片在线播放免费 | 午夜伦理视频 | 一级毛片免费全部播放完整 | 国产在线观看成人 | 无遮挡无删动漫肉在线观看 | 欧美日韩在线视频一区 | 黄网址在线观看 | 国产亚洲成在线播放va | 国内精品卡一卡二卡三 | 亚洲国产一区二区三区 | 欧美成a人片免费看久久 | 国产伦码精品一区二区 | 最新99国产成人精品视频免费 | 色www视频永久免费 骚片免费 | 天天摸天天爽视频69视频 | 日韩欧美一区二区三区不卡视频 | 黄色视屏在线 | 大香伊人网 | 中文有码在线 | 精品亚洲综合在线第一区 | 二区久久国产乱子伦免费精品 | 黄色短视频免费观看 | 狠狠色丁香六月色 | 美女在线观看网站 | 一国产大片在线观看 | 天天干天天干天天干天天 | 欧美激情欧美狂野欧美精品免费 | 26uuu另类亚洲欧美日本一 | 欧美成人看片一区二区三区 | 久久亚洲私人国产精品 | 欧美福利影院 | 成人a大片高清在线观看 | 天天干影视 |