精巧的设计
QName name = source.getName();
StAXArtifactProcessor<?> processor =
(StAXArtifactProcessor<?>)processors.getProcessor(name);
再看QName来自于何方神圣,在我们开发的例子程序中有Calculator.composite配置文件:
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
上面的QName的localPart属性就是“component”,“implementation.java”,而这个QName是在读Calculator.composite文件时产生的,根据这个QName,我们就能找到要处理这个tag的类。如当读到“implementation.java”的QName,根据QName作为key值就在HashMap中找到JavaImplementationProcessor ,然后由JavaImplementationProcessor来处理。
“implementation.java“-〉JavaImplementationProcessor,多么令人拍案叫绝的设计啊!
(4)JDK 泛型在工厂模式中的应用
Tuscany是基于JDK1.5的开发出来的,其中大量使用了泛型等新特性,下面简单地介绍泛型在工厂模式中的应用。