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

Java 如何最好地实现这个设计问题?,java,design-patterns,Java,Design Patterns,我们正在重构一段代码,该代码使用XML文件定义对象的各种属性。让我们调用此对象报告。根据客户的不同,有年度、季度等不同的报告。有数百份这样的报告 目前,我们使用JAXB读取这些XML文件并将其转换为报表对象并进行处理。代码中涉及很多if和else,这取决于XML中设置的属性,需要实现相应的行为 我想知道在新代码中实现这一点的最佳方式是什么。注意,我无法修改XML文件。听起来您需要解耦。 ie将您的报表对象拆分为报表描述(基本上是解析的xml),然后创建一组使用它的类 因此,您可以在reportd

我们正在重构一段代码,该代码使用XML文件定义对象的各种属性。让我们调用此对象报告。根据客户的不同,有年度、季度等不同的报告。有数百份这样的报告

目前,我们使用JAXB读取这些XML文件并将其转换为报表对象并进行处理。代码中涉及很多if和else,这取决于XML中设置的属性,需要实现相应的行为


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

听起来您需要解耦。 ie将您的报表对象拆分为报表描述(基本上是解析的xml),然后创建一组使用它的类

因此,您可以在reportdescription上有一个返回报表对象集合的方法 e、 g.报告页眉、报告正文和报告页脚

然后reportbody.items将返回组。 报告组返回groupheader、body、footer等

仍然会有同样多的如果,但会干净得多


PS如果当前的xml可以从结构/格式的更改中获益,那么xsl转换不应该是一个很大的开销,而且可能会大大简化代码。

听起来您需要解耦。 ie将您的报表对象拆分为报表描述(基本上是解析的xml),然后创建一组使用它的类

因此,您可以在reportdescription上有一个返回报表对象集合的方法 e、 g.报告页眉、报告正文和报告页脚

然后reportbody.items将返回组。 报告组返回groupheader、body、footer等

仍然会有同样多的如果,但会干净得多


PS如果当前的xml可以从结构/格式的更改中获益,那么xsl转换不应该是一个很大的开销,而且可能会大大简化代码。

目标语言是什么?而
if
s和
else
s中到底是什么,是报表对象中的某个属性被设置了,还是属性可以接受的各种值被切换了?这是针对Java的。if和else将定义不同的行为。如果为XML中的属性定义了值,请执行某些操作。某些XML中也可能完全缺少属性。您面临的问题是什么,为什么您认为必须重新设计现有的解决方案?我不想挑战这个问题——只是想理解它……目标语言是什么?而
if
s和
else
s中到底是什么,是报表对象中的某个属性被设置了,还是属性可以接受的各种值被切换了?这是针对Java的。if和else将定义不同的行为。如果为XML中的属性定义了值,请执行某些操作。某些XML中也可能完全缺少属性。您面临的问题是什么,为什么您认为必须重新设计现有的解决方案?我不想挑战这个问题-只是想理解它。。。