java JsonGenerator可以在同一个调用中写入OutputStream和Writer吗?
是否有一种优雅的解决方案或模式,可以将writeStartObject()的一次调用应用于Writer和OutputStream
try (
JsonGenerator output = jfactory.createGenerator(outputWriter); // writer
JsonGenerator cachingOutput = jfactory.createGenerator(cachingService.getCachingOutputStream(id));//outputstream
) {
output.writeStartObject();
cachingOutput.writeStartObject();
...
# 1 楼答案
writer
或outputStream
用于其他用途,并达到广泛的程度,那么您应该将它们分开,除非这种广泛的使用在这两种用途中得到了平等的反映。最好将它们隐藏在两个独立的Data Access Objects后面,在这两个独立的Data Access Objects中,它们的使用可以被划分开来,根据访问它们的目的以描述性的方式公开它们的操作——稍微更适合您的业务无论是有限的使用还是广泛的使用,为了在这两种情况下得到同等的使用,我可能会使用façade这样的:
请注意,我正在将
OutputStream
传递给新的SimultaneousFeed
实例,而不是传递id
。传递id
会在新实例中引发data coupling,因为id
是一段SimultaneousFeed
不应该知道的数据。这允许SimultaneousFeed
只关注输出数据,从而提高可重用性和可维护性可考虑的另一种模式是^ {A4}模式,前提是您能够对^ {CD10>}实例和^ {CD11>}类的子类进行分类。这将允许您创建一个自定义
JsonGenerator
,在writeStartObject()
方法的重写实现中同时写入两个输出。在这种情况下,您可以在jfactory
类中提供一个方法: