设计模式之---备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象

恢复到原先保存的状态

很好理解,就像我们以前打通关游戏一样,打通某个关卡,就会备份一下,不然根本通不了关。。

设计模式之---备忘录模式_第1张图片

package memento;

//备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
public 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;  
    }  
}  
package memento;

//发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
public class Originator {
	private String state;
	public String getState() {  
        return state;  
    }  
    public void setState(String state) {  
        this.state = state;  
    }  
    public Memento createMemento(){  
        return new Memento(this.state);  //返回当前状态的封装对象
    }  
    public void recover(Memento memento){  
        this.setState(memento.getState());  
    }  
    public void showState() {
    	System.out.println("当前状态为:"+state);
    }
}
package memento;

//管理角色:对备忘录进行管理,保存和提供备忘录。
public class Caretaker {  
    private Memento memento;  
    public Memento getMemento(){  
        return memento;  
    }  
    public void setMemento(Memento memento){  
        this.memento = memento;  
    }  
}  
package memento;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Originator originator=new Originator();
		originator.setState("初始状态");
		originator.showState();
		
		Caretaker caretaker=new Caretaker();
		caretaker.setMemento(originator.createMemento());//备份状态
		originator.setState("另一个状态");
		originator.showState();
		originator.recover(caretaker.getMemento());
		originator.showState();
	}

}

你可能感兴趣的:(设计模式)