2013-04-01 58 views
2

我在我的Java程序中使用了複合模式,這樣一個組件被三個類擴展。在Java中複製複雜的數據結構

  1. 葉類擴展組件
  2. 複合延伸元器件
  3. 裝飾使用列表,其中每個元素可以是一個葉延伸組件(用於裝飾葉子)

該複合材料目前實施,另一個複合或裝飾。我正在考慮添加撤銷/重做功能,我將使用Command/Memento模式。

現在我的問題是,如何在此處創建我的列表的深層副本,以便稍後恢復它?基本上,需要找到一種方法,讓我在執行另一個命令之前,在當前時間創建一個新的完全相同的副本。我認爲必須有一些遞歸的方式來做到這一點。

感謝

回答

1

代碼最便宜的方法(但也許不是最便宜的在整體CPU和內存使用方面)是爲了紀念你的類序列化,序列化列表到內存緩衝區,然後反序列化回變成一個物體。如果你做得對,結果將是對象列表的深層副本。

+0

是的,它做到了。實際上,我的數據結構非常小,所以在這裏CPU和內存的使用並不是一個嚴重的問題。謝謝@dasblinkenlight – Waqas