备忘录模式

package Test;

// 球员
public class Player {
	
	private String userName;
	private String state;
	
	
	public Player(String userName){
		this.userName = userName;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}
	
	
	// 创建一个备忘录
	public NBAProgress createMemento(){
		
		 return new NBAProgress(this.state);
	}
	
	
	// 恢复一个备忘录
	public void restoreMemento(NBAProgress nbaProgress){
		
		 this.setState(nbaProgress.getState());
	}
	
	
	public void changeState(String state){
		
		this.state = state;
		
	}

}

package Test;


// 进入NBA的进展问题 

public class NBAProgress {
	
	 private String state;
	 
	 public NBAProgress(String state){
		  
		  this.state = state;
		  
	 }

	public String getState() {
		return state;
	}

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

package Test;

// 管理所有的 备忘录 
public class MementoManager {
	
	private NBAProgress  nbaProgress;

	public NBAProgress getNbaProgress() {
		return nbaProgress;
	}

	public void setNbaProgress(NBAProgress nbaProgress) {
		this.nbaProgress = nbaProgress;
	}

}

package Test;


/****
 * 
 * @author yubo   
 * 
 * 备忘录模式: 实现一种记录状态和恢复状态的机制。 可以随时的处理这种功能的切换。 
 * 
 *         测试场景:   大郅进入NBA, 第一次失败, 然后回来, 然后第二次, 失败,回来。 然后在去。 
 * 
 * 
 * 初步理解就是对状态的一种管理,创建和恢复。 同时对这个状态的管理也是一种封装。 时刻需要注意的是高层不需要太多的变化和接触。
 *
 */
public class Main {
	 
	public static void main(String[] args) {
		  
		Player  player = new Player("大郅");
		
		// 初始化状态: 
		player.setState("NBA征途开始,期待....");
		MementoManager  manager = new MementoManager();
		// 记录当前的这种状态
		manager.setNbaProgress(player.createMemento());
		System.out.println(player.getState());
		
		
		player.changeState("篮协开始捣乱了....很失落");
		System.out.println(player.getState());
		
		
		System.out.println("\n-----------------第二次开始从新开始,恢复到最初状态--------------------->\n");
		
		// 恢复最初状态 
		player.restoreMemento(manager.getNbaProgress());
		System.out.println(player.getState());

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值