2013-04-01 56 views
2

我在我的Java程序中使用了复合模式,这样一个组件被三个类扩展。在Java中复制复杂的数据结构

  1. 叶类扩展组件
  2. 复合延伸元器件
  3. 装饰使用列表,其中每个元素可以是一个叶延伸组件(用于装饰叶子)

该复合材料目前实施,另一个复合或装饰。我正在考虑添加撤销/重做功能,我将使用Command/Memento模式。

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

感谢

回答

1

代码最便宜的方法(但也许不是最便宜的在整体CPU和内存使用方面)是为了纪念你的类序列化,序列化列表到内存缓冲区,然后反序列化回变成一个物体。如果你做得对,结果将是对象列表的深层副本。

+0

是的,它做到了。实际上,我的数据结构非常小,所以在这里CPU和内存的使用并不是一个严重的问题。谢谢@dasblinkenlight – Waqas