自動測試:變化多端的輸出(5)
發表于:2014-12-17來源:uml.org.cn作者:不詳點擊數:
標簽:自動測試
String[] list = outputterList.split(;); 9 for (int i=0;i String outputter = list[i]; 11 if (outputter.equalsIgnoreCase(TXTOutputter)){ 12 oc.Add(new TXTOutputter()); 13 } 14 else if(outputter.equalsIg
String[] list = outputterList.split(";"); 9

for (int i=0;i
String outputter = list[i]; 11

if (outputter.equalsIgnoreCase("TXTOutputter")){ 12

oc.Add(new TXTOutputter()); 13

} 14

else if(outputter.equalsIgnoreCase("XMLOutputter")){ 15

/*oc.Add(new TXTOutputter());*/ 16

} 17

} 18

return null; 19

} 20

21

} 22
代碼為示意代碼,真實代碼還有更多細節需要處理
是的,就這么簡單。我們看到系統正常的工作了。也許你會問,那它是什么模式呢?我前面提過它是一種模式來著的。是的。它應該是組合模式(Composite Pattern)的一種退化形式。那為什么說他是退化的形式呢?我們先來看一下,組合模式的定義:
合成(Composite)模型模式屬于對象的結構模式[GOF95],有時又叫做部分-整體(Part-Whole)模式。合成模式將對象組織到樹結構中,可以用來描述整體與部分的關系。合成模式可以客戶端將單純元素與復合元素同等看待。
引用自《Java與模式》閻宏
從這個定義可以看出合成模式大致有三個特點,一具用兩種對象,簡單對象和復雜對象,但兩種對象對客戶程序具有相同接口,二具有層次結構。三具有遞歸特性。
從這些條件看來,我們的系統確實簡單的多,對于客戶程序來說,完全不知道有復雜對象,由于工廠的介入,系統不會有遞歸的情況出現,并且,對于該系統也沒有遞歸的要求。其實,這個輸出系統是組合模式,工廠模式,及寬窄接口方式綜合的來解決問題的。若上來就硬套一種模式的話,一定會帶來很大的煩麻。
原文轉自:http://www.uml.org.cn/Test/200902127.asp