如何最好地实现这个设计问题?

时间:2011-12-11 12:39:03

标签: java design-patterns

我们正在重构一个使用XML文件来定义对象的各种属性的代码。让我们称这个对象为Report。有不同的报告,如年度,季度等,其他报告取决于客户。有数百个这样的报道。

目前,我们使用JAXB读取这些XML文件并将其转换为Report对象并进行处理。代码中有很多if和else参与,因为根据XML中设置的属性需要实现相应的行为。

我想知道在新代码中实现这一点的最佳方式是什么。注意,我无法修改XML文件。

1 个答案:

答案 0 :(得分:1)

听起来你需要解耦。 即将报表对象拆分为报表描述,基本上是解析的xml,然后有一组使用它的类。

所以你可以在reportdescription上有一个返回报告对象集合的方法 egreportheader,reportbody和reportfooter,

然后reportbody.items将返回组。 报告组返回groupheader体页脚等

仍有尽可能多的ifs,但它会更清洁。

PS如果当前的xml将受益于结构/格式的改变,xsl转换不应该是一个重要的开销,并且可能只是代码的显着简单。