設計模式---備忘錄模式
阿新 • • 發佈:2018-12-19
定義
備忘錄模式:在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。
備忘錄模式通常有一下幾種角色:
● Originator發起人角色 記錄當前時刻的內部狀態,負責定義哪些屬於備份範圍的狀態,負責建立和恢復備忘錄資料。 ● Memento備忘錄角色 負責儲存Originator發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。 ● Caretaker備忘錄管理員角色 對備忘錄進行管理、儲存和提供備忘錄。
案例
/** * 備忘錄類 */ public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } }
/** * 發起人 */ public class Originator { private String state; public void setState(String state) { this.state = state; } public String getState() { return state; } //儲存狀態到備忘錄物件 public Memento saveStateToMemento() { return new Memento(state); } //從備忘錄物件中獲取狀態 public void getStateFromMemento(Memento memento) { state = memento.getState(); } }
/** * 備忘錄管理人員 */ public class CareTaker { private List<Memento> mementoList = new ArrayList<>(); //新增備忘錄物件 public void add(Memento memento) { mementoList.add(memento); } //獲取備忘錄物件 public Memento get(int index) { return mementoList.get(index); } }