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

JUNIT源碼探秘(六):Junit代碼分析之組合模式

在面向過程的編程中,類似于樹形結(jié)構(gòu)或者文件目錄結(jié)構(gòu),一般使用遞歸的方式進(jìn)行處理,而在面向過程中,對于這類問題抽象處理為組合模式。

組合模式(Composite Pattern)有時(shí)候又叫做部分-整體模式,它在處理樹型結(jié)構(gòu)的問題中,模糊了簡單元素和復(fù)雜元素的概念,客戶程序可以向處理簡單元素一樣來處理復(fù)雜元素,從而使得客戶程序與復(fù)雜元素的內(nèi)部結(jié)構(gòu)解耦。組合模式讓你可以優(yōu)化處理遞歸或分級(jí)數(shù)據(jù)結(jié)構(gòu)。

對于組合模式的角色也比較簡單,我們試著對文件目錄結(jié)構(gòu)進(jìn)行分析,在文件目錄結(jié)構(gòu)中至少有兩種結(jié)構(gòu),一種是文件,一種是目錄。對于這兩個(gè)角色大的區(qū)別是,一個(gè)是葉子節(jié)點(diǎn),一個(gè)是樹枝結(jié)構(gòu)。那么也可以把這兩個(gè)對象抽象成一個(gè)接口類。這樣分析后文件目錄結(jié)構(gòu)有三個(gè)角色,即葉子(葉子組件),樹枝 (組合組件),抽象結(jié)構(gòu)(抽象構(gòu)件接口)。下面對每個(gè)角色具體分析

抽象構(gòu)件角色(Component):它為組合中的對象聲明接口,也可以為共有接口實(shí)現(xiàn)缺省行為。

 樹葉構(gòu)件角色(Leaf):在組合中表示葉節(jié)點(diǎn)對象——沒有子節(jié)點(diǎn),實(shí)現(xiàn)抽象構(gòu)件角色聲明的接口。

樹枝構(gòu)件角色(Composite):在組合中表示分支節(jié)點(diǎn)對象——有子節(jié)點(diǎn),實(shí)現(xiàn)抽象構(gòu)件角色聲明的接口;存儲(chǔ)子部件。

Client(客戶端)

–通過Component接口控制組合部件的對象

各個(gè)角色之間關(guān)系如下:

如圖上圖所示:一個(gè)Composite實(shí)例可以像一個(gè)簡單的Leaf實(shí)例一樣,可以把它傳遞給任何使用Component的方法或者對象,并且它表現(xiàn)的像是一個(gè)Leaf一樣。使用組合模式使得這個(gè)設(shè)計(jì)結(jié)構(gòu)非常靈活。

各個(gè)角色代碼實(shí)現(xiàn)如下:

抽象構(gòu)件角色(Component):

public interface Component

{

   public void doSomething();

}

樹葉構(gòu)件角色(Leaf):

public class Leaf implements Component

{

   @Override

   public void doSomething()

   {

      System.out.println("執(zhí)行方法");

   }

}

樹枝構(gòu)件角色(Composite):

public class Composite implements Component

{

   private List list = newArrayList();

   public void add(Component component)

   {

      list.add(component);

   }

   public void remove(Component component)

   {

      list.remove(component);

   }

   public List getAll()

   {

      return this.list;

   }

   public void doSomething()

   {

      for(Component component : list)

      {

         component.doSomething();

      }

   }

}

上一頁1234567下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd