在Java中复制复杂的数据结构

时间:2013-04-01 01:51:56

标签: java data-structures decorator composite

我在我的Java程序中使用Composite模式,因此Component正在由三个类扩展。

  1. Leaf类扩展了Component
  2. Composite extends Component
  3. 装饰器扩展组件(用于装饰叶子)
  4. 目前使用List实现复合,其中每个元素可以是叶子,另一个复合或装饰器。我正在考虑添加撤消/重做功能,我将使用Command / Memento模式。

    现在我的问题是,我如何在此处创建列表的深层副本,以便以后可以恢复?基本上,需要找到一种方法,允许我在执行另一个命令之前在当前时间创建我的列表的新相同副本。我认为必须有一些递归的方式来做到这一点。

    由于

1 个答案:

答案 0 :(得分:1)

最便宜的代码方法(但在整体CPU和内存使用方面可能不是最便宜的)是将类标记为可序列化,将列表序列化为内存缓冲区,然后将其反序列化为对象。如果你做得对,结果将是你的对象列表的深层副本。