自动测试:变化多端的输出(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