memento -對象行爲型模式

        1.意圖
          在不破壞封裝的前提下,捕獲一個對象的內部狀態,並在該對象外保存這個狀態
          這樣就可以將該對象恢復到原先保存的狀態
          2.參與者
          Memento - 存儲對象狀態
                  - 防止原發器以外的其它對象訪問備忘錄
          Originato - 原發器創建一個備忘錄,用以記錄當前時刻它的內部狀態
          
          Caretaker -負責保存好備忘錄
                    -不能對備忘錄的對象進行操作或者檢測

         3.結構

  4.代碼

public class Memento {
	private String state;

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}
	
} 


public class Originato {
	private String state;

	public Memento createMemento() {
		Memento memento = new Memento();
		memento.setState(state);
		return memento;
	}

	public void resumeByMemento(Memento memento) {
		this.state = memento.getState();
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

}

public class Caretaker {
	Memento memento;

	public Memento getMemento() {
		return memento;
	}

	public void setMemento(Memento memento) {
		this.memento = memento;
	}
	
}

public class Client {
	public static void main(String[] args) {
		Originato o = new Originato();
		o.setState("1");
		Caretaker c =new Caretaker();
		c.setMemento(o.createMemento());
		o.setState("2");
		o.setState("3");
		o.resumeByMemento(c.getMemento());//恢復到一狀態
		System.out.println(o.getState());
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章