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