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());
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
备忘录模式是一种行为设计模式,它允许在不破坏封装性的情况下捕获和恢复对象的内部状态。下面是一个 Java 备忘录模式的例子: ```java // 备忘录类 class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } } // 原始类 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(); } } // 管理类 class CareTaker { private List<Memento> mementoList = new ArrayList<>(); public void add(Memento state) { mementoList.add(state); } public Memento get(int index) { return mementoList.get(index); } } // 测试类 public class MementoPatternDemo { public static void main(String[] args) { Originator originator = new Originator(); CareTaker careTaker = new CareTaker(); originator.setState("State #1"); originator.setState("State #2"); careTaker.add(originator.saveStateToMemento()); originator.setState("State #3"); careTaker.add(originator.saveStateToMemento()); originator.setState("State #4"); System.out.println("Current State: " + originator.getState()); originator.getStateFromMemento(careTaker.get(0)); System.out.println("First saved State: " + originator.getState()); originator.getStateFromMemento(careTaker.get(1)); System.out.println("Second saved State: " + originator.getState()); } } ``` 这个例子中,`Originator` 类表示需要被备份的对象,`Memento` 类表示备份的状态,`CareTaker` 类表示备份管理器。在测试类中,我们可以看到如何使用备忘录模式来保存和恢复对象的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值