2012-07-22 39 views
0

我有一個獨立的Java應用程序,其中來自GUI的一個函數調用將導致不同類的實例變量的多個更改。我們希望爲此編寫一個事務管理器,以便如果拋出一些異常,然後在執行塊之前在內存中完成的更改被恢復。我們可以通過在調用之前創建實例變量的副本並在發生異常時恢復更改,確實可以做到一種天真的方式,但我正在尋找一些複雜的並有一個好的設計來處理這個問題。獨立Java應用程序中的內存更改的事務管理

請讓我知道,如果任何人有一些框架或通用設計,可以用來解決這個問題的想法。

回答

0

您可以使用Memento設計模式來存儲對象的狀態。如果一切正常,則刪除最後存儲的狀態。如果有問題,則恢復最後的狀態。這是一個參考(一個窮人)http://en.wikipedia.org/wiki/Memento_pattern。試試Google瞭解更多詳情。

Memento的工作方式與您所說的相似,但它將形式化爲可提供此功能的體系結構。

這裏是古典參考:http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&qid=1342931128&sr=8-1&keywords=design+patterns

0

克隆(通過克隆/序列&反序列化或其它機制)的對象到事務視圖和傳播狀態回(隱藏)提交的實例(combint與optimistc基於版本計數器的鎖定機制)是常用的方法。 (例如,由https://github.com/JanWiemer/jacis交易對象存儲使用...)