0

由于现有的代码结构,它看起来像这样:

// Read buffer (using ByteBuffer)
// Pass buffer to a remote method, which MIGHT write to it
// Write buffer back if dirty

我希望我的缓冲区应该能够识别它是否被写入(如果它是脏的)。我没有在 java 中找到任何带有脏标志的缓冲区实现。

在所有这些情况下,我的代码已经在传递ByteBuffers,为了添加这个脏标志,我应该:

  • ByteBuffer简单地用脏标志包装实现
  • 用底层数组编写一个类,添加脏大和其他操作(get/put int 或 long)并通过环绕数组byte重新创建ByteBufferbyte
  • 扩大ByteBuffer班级?(我很乐意实现 get/put,但是要实现的方法太多了)

另外,包装ByteBuffer实现的开销是多少?

4

1 回答 1

1

这是装饰器模式适用的问题。您正在严格地将简单的功能添加到已经在使用的现有类中。在这种情况下,通过继承来扩展类是一种自然且低威胁的实现。

Java 中使用扩展类与基类的开销基本上为零。我没有将脏标志的空间和实现它所需的几条指令算作“开销”。但这些成本也非常低。

于 2013-09-07T15:24:40.397 回答