備忘錄模式(Memento):主要目的是保存一個對象的某個狀態,以便在適當的時候恢復對象。
##一、uml建模:

##二、代碼實現
~~~
/**
* 備忘錄模式(Memento):主要目的是保存一個對象的某個狀態,以便在適當的時候恢復對象
*
* 示例:原始類--> 創建、恢復備忘錄
*/
class Original {
private String state;
public Original(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
/**
* 創建備忘錄
*/
public Memento createMemento() {
return new Memento(state);
}
/**
* 恢復備忘錄
*/
public void recoverMemento(Memento memento) {
this.state = memento.getState();
}
}
/**
* 備忘錄
*/
class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
/**
* 用來存儲備忘錄(持有備忘錄實例):只能存儲,不能修改
*/
class Storage {
private Memento memento;
public Storage(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
}
/**
* 客戶端測試類
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
/**
* 創建原始對象
*/
Original original = new Original("白天模式");
System.out.println("original初始狀態為:" + original.getState());
/**
* 創建備忘錄
*
* 注意:original.createMemento()會將初始state(白天模式)傳給Memento對象
*
* 以備需要的時候可以調用storage.getMemento()來拿到該state(白天模式)狀態
*
* 相當于state(白天模式)這個狀態已經委托給了storage這個對象來保存
*/
Storage storage = new Storage(original.createMemento());
original.setState("夜間模式");
System.out.println("original修改后的狀態為:" + original.getState());
/**
* 恢復備忘錄
*/
original.recoverMemento(storage.getMemento());
System.out.println("original恢復后的狀態為:" + original.getState());
}
}
~~~
##三、總結
Memento備忘錄設計模式用來備份一個對象的當前狀態,當需要的時候,用這個備份來恢復這個對象在某一個時刻的狀態。
- 前言
- (一)策略模式建模與實現
- (二)觀察者模式建模與實現
- (三)裝飾者模式建模與實現
- (四)工廠方法模式建模與實現
- (五)抽象工廠模式建模與實現
- (六)單例模式建模與實現
- (七)命令模式建模與實現
- (八)適配器模式建模與實現
- (九)外觀模式建模與實現
- (十)模板方法模式建模與實現
- (十一)迭代器模式建模與實現
- (十二)組合模式建模與實現
- (十三)狀態模式建模與實現
- (十四)代理模式建模與實現
- (十五)建造者模式建模與實現
- (十六)原型模式建模與實現
- (十七)橋接模式建模與實現
- (十八)責任鏈模式建模與實現
- (十九)備忘錄模式建模與實現
- (二十)解釋器模式建模與實現
- (二十一)享元模式建模與實現
- (二十二)中介者模式建模與實現
- (二十三)訪問者模式建模與實現
- Java設計模式博客全目錄