自動測試:變化多端的輸出(3)

發表于:2012-01-13來源:未知作者:娃娃點擊數: 標簽:自動化測試
{ 7 if (outputter.equalsIgnoreCase(TXTOutputter)) { 8 return new TXTOutputter(); 9 } 10 else if(outputter.equalsIgnoreCase(XMLOutputter)) { 11 /**//*return new XMLOutputter();*/ 12 } 13 return null; 1
{ 7
if (outputter.equalsIgnoreCase("TXTOutputter"))
{ 8
return new TXTOutputter(); 9
} 10
else if(outputter.equalsIgnoreCase("XMLOutputter"))
{ 11
/**//*return new XMLOutputter();*/ 12
} 13
return null; 14
} 15
16
}

  到了目前這個狀態,似乎我們的問題得到了解決。我們可以隨時的改變我們的輸出方式。而沒有太多的代價。測試系統也在此基礎上如火如荼的開發著。好景不長,很多在此基礎上開發的程序員,提出了一個需求,那就是他們的測試系統同時需要有兩種或兩種以上的輸出方式,在傳輸到數據庫里的同時還需要在本地輸出一份報告。 這時你會說,你可以在測試系統中創建兩種輸出方法對象不就行了嘛,然后在“需要輸出的地方”調用兩次就行了。這個確實是一個不負責任的說法。(經常能見到這樣的設計師),對客戶程序帶來的煩麻也顯而易見。

  那我們就來看來如何解決這樣的問題,首先,總結一下問題描述。在測試系統中,

  測試報告具有相同的輸出內容類型

  測試報告需要有不同的輸出形式(方式)

  測試報告可能同時需要有兩種或兩種以上的輸出形式

  客戶程序無需感知有多種輸出方式存在

  這時,往往有程序員會打開《設計模式》去尋找解決的方案,這真的是不好的方法,或者是找不到現成的模式,或者模式的誤用就發生了。好在,這個確實是模式的一種也許你可能找得到,但我還是不建議套用模式的方式解決問題。接下來我們看看通過自己分析來解決問題,和現存模式有什么區別。

  根據問題描述4可以看得出,多種輸出同時生效對于客戶程序是透明的,也就是說,客戶程序對于多種輸出方式的調用和單個輸出方式的調用具有相同的接口,另外,多種輸出方式是并列的關系,并不存在層次關系。我們可能根據客戶程序調用形式想到,若我們將生成的一個或多個輸出對象存儲在一個容器內部,并且讓這個容器也具用輸出內容接口。當對于這個容器調用輸出內容接口的時候,就將這個操作依次傳遞給容器內所用對象。 哦~!原來是這樣,就可以解決同時多種輸出的問題,并且從客戶角度看,只是對一個簡單輸出對象接口的調用,而完全不知,此時已是復雜對象了。

composite outputter
Code 1
package my.cnblog.output; 2
import java.util.Vector; 3
import java.util.Iterator; 4
5
/**//*A Composite Outputter*/ 6
7

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97