【发布时间】:2021-10-26 04:11:14
【问题描述】:
界面的一个简单版本是:
public interface IAPI {
void initialize(int processId) throws APIException;
APIResult process(IData data) throws APIException;
void finalize();
}
Finalize 方法创建一份关于已处理数据的摘要报告(对我来说非常重要的信息),但对客户来说并不重要。
API 的使用方式如下:
IAPI api = new API();
api.initialize(18);
loop {
IData data = …..getData!
APIResult res = api.process(data);
// do something with result.
}
// Finalize - We want to enforce the finalize call
api.finalize();
我需要一个解决方案来确保在他们处理完数据后调用 finalize 方法。该解决方案必须足够灵活,以让用户定义他们希望如何处理异常,处理他们想要的尽可能多的数据。提前感谢您提供任何替代方案。
【问题讨论】:
-
我会避免依赖调用
finalize()方法的客户端。它根本不可靠,尤其是在运行process()时满足了他们的担忧。我的意思是,开发人员会随意不关闭数据库连接对象...解决此问题的一种方法是汇总您的数据并将其缓冲为process()运行。通过这种方式,您可以实时获取统计信息,也可以使用计划任务从队列中提取缓冲数据或类似的方式来计算统计信息。
标签: java api-design