`

java 备忘录模式

 
阅读更多
package memento;
/**
 * 备忘录(用于存放状态的类)
 * @author Administrator
 *
 */
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;
/**
 * 保存和读取备忘录的类
 * @author Administrator
 *
 */
public class Creater {
	private Memento memento;
	/**
	 * 保存备忘录
	 * @param memento
	 */
	public void saveMemento(Memento memento){
		this.memento=memento;
	}
	/**
	 * 读取存档
	 * @return
	 */
	public Memento readMemento(){
		return this.memento;
	}
	
}

 

package memento;
/**
 * 发起人角色 负责创建备忘录对象将自己的内部状态存储起来
 * @author Administrator
 *
 */
public class Originator {
	private String state;
	/**
	 * 创建备忘录
	 * @param state
	 * @return
	 */
	public Memento createMemento(){
		return new Memento(state);
	}
	/**
	 * 读取存档复制给state
	 * @param memento
	 */
	public void restoreMemento(Memento memento){
		this.state = memento.getState();
	}
	
	public String getState() {
		return state;
	}
	
	public void setState(String state) {
		this.state = state;
		System.out.println("state is "+state);
	}
	
	
}

 

package memento;
/**
 * Client 客户端类
 * @author Administrator
 *
 */
public class MementoMain {
	public static void main(String[] args) {
		Originator org = new Originator();
		org.setState("ON");
		Memento m = org.createMemento();
		Creater c= new Creater();
		c.saveMemento(m);
		org.setState("OFF");
		org.restoreMemento(c.readMemento());
		System.out.println(org.getState());
	}
	
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics