2011年4月19日 星期二

Gof Behavioral - Memento Pattern


  • Intent


To capture and internalize an object's internal state so that objects can be restored to this state later. It must do this without violating encapsulation.

使用"助記物"有兩個重要的目標

1. 儲存系統關鍵物件的重要狀態

2. 維護關鍵物件的封裝

當然,不要忘記單一責任守則,不要將儲存狀態的工作和關鍵物件混再一起,而這個專門掌握狀態的物件就叫做助記物。


  • Benefits




  1. It preserves encapsulation boundaries.

  2. It simplifies the originator.

  3. 將被儲存的狀態放在外面,不要和關鍵物件混再一起,這可以幫助維護內聚力。

  4. 讓關鍵物件的資料封裝不受破壞。

  5. 提供了容易實踐的恢復能力。




  • 適用情境 - 用來儲存狀態,但缺點是回復狀態過程中可能很耗時間,在java系統中可以透過serialization機制儲存系統狀態。

  • Class Diagram


沒有留言: