java – 记录已删除对象的BlockingQueue装饰器

我有一个BlockingQueue实现,正在生产者 – 消费者的情况下使用.我想装饰这个队列,以便记录从中获取的每个对象.我知道简单的实现是什么样的:只需实现BlockingQueue并在构造函数中接受BlockingQueue,所有方法都将委托给它.还有另外一种方法让我失踪吗?或许图书馆?有回调接口的东西?

解决方法:

您可能希望考虑的替代方案是dynamic proxies.这允许您使用反射式API来处理在给定接口上发出的请求 – 将所有调用委托给底层实现非常简单,同时添加一些日志记录逻辑方法名称与其中一个take方法匹配.

这种方法的缺点是它为所有方法调用增加了一些额外的开销(对于一般用途几乎可以忽略不计,但如果在性能关键部分使用它应该是一个黄色标记),并且代码最终看起来很麻烦.最终你正在做的是定义你在帖子中描述的完全相同的行为,除了你不需要明确地编写每个委托方法但提供一种通配的实现.

上一篇:Java-ArrayList


下一篇:Java Vector(扩容细节)