我正在从一个java应用程序中写出一大堆数据,这些数据可以被最终用户使用,可以是文件、控制台或任意监听程序。如果允许用户指定他们希望如何使用这些数据,那就太好了。人们对这类问题采取了什么方法,有没有一个很好的开源解决方案?我可以看到一些简单的东西,比如使用带有不同附加器的log4j等等。
发布于 2009-11-03 23:01:53
考虑输出数据采用的形式,以及应用程序可能需要返回的响应对象,然后选择或创建满足这些要求的接口。
在最抽象的层次上,您将输出一堆字节,因此OutputStream
肯定是“字节接收器”的正确接口。更高的抽象级别,您可能会输出文本字符,以防Writer
合适。如果你要传递域对象,那么你可能需要更具体的东西。
然而,我怀疑您的界面不需要比
public interface Consumer<T>
{
public void consume(T obj);
}
如果您的提供者关心这类事情(例如,使用int来记录处理的实体数量),则可能使用返回类型。毫无疑问,在开源项目中,有很多接口都符合类似的模式--毕竟,在一个具有单一一元方法的接口中,你只能有这么多的变化--但是没有什么东西会像这种模式的“一个真实版本”那样浮现在脑海中。此外,它真的很容易理解,因为你不必担心实现,所以在大约60秒内自己滚动几乎没有任何负面影响。
发布于 2009-11-03 22:55:33
您是在谈论Java应用程序内部的接口吗?
在这种情况下,只需提供从中读取数据的InputStream
/Reader
或接受写入数据的OutputStream
/Writer
即可。
如果您正在谈论与外部程序的通信,那么就做UNIX工具长期以来所做的事情:
从stdin
stdout
的
这样,用户可以做他们想做的任何事情:
通过keyboard
InputStream
/Reader
/OutputStream
/Writer
思想基本上与应用于Java API的概念相同。
发布于 2009-11-03 22:55:45
您可以设计您的数据生成应用程序接口,使其与通用的Writer
或OutputStream
一起工作;我个人更喜欢Writer
,因为我认为它使API更好。
https://stackoverflow.com/questions/1667805
复制相似问题