我正在开发一个Web应用程序,它从不同的来源(Web服务,EJB等)收集数据,并在浏览器和PDF中显示它们。
目前,我调用所有外部服务并创建自己的POJO。基本上我将外部对象转换为我自己的表示(并且只获取我需要的属性)。
然后要为Web视图(浏览器)和PDF格式化数据。例如,某些文本必须“缩写”,这意味着它们必须被切断并添加省略号(...)。对于Web(HTML)和PDF,格式必须相同。
我现在的问题是我应该在哪里放置格式化逻辑。
如果我将视图特定属性添加到保存格式化文本的POJO,我将视图逻辑与数据混合。如果我以后可能会有第三个视图,我需要一个不同的格式,我必须更多地污染POJO。
如果我将POJO直接发送到视图(web和PDF),那么视图必须进行格式化,我可能会在两个位置复制格式化逻辑(例如,一次在JSP中实现,一次在XSLT中实现)
我是否应该创建另一个图层,将POJOS转换/映射到“查看”为视图准备的特定POJO?
假设我有一个对象Customer,它包含属性firstName和lastName。该视图仅限于显示5个字符,并始终显示“firstName lastName”(对于HTML视图和PDF)
我应该创建一个CustomerView,它具有属性“name”并且只保存一个长度为5个字符的子字符串吗?
然后我可以有一个CustomerTransformer,它将Customer对象作为输入,CustomerView对象作为输出。
这是一个合理的解决方案吗?我该怎么称呼这些物体?扩展“视图”是否明确了目的?
有没有一种默认方式来处理这种情况?
感谢您提供的意见或建议