
package com.wangbiao.design.memento;
/**
*
* @Title: GameRole.java
* @Package com.wangbiao.design.memento
* @Description: TODO
* @author wangbiao
* @date 2014-9-22 上午11:52:44
* @version V1.0
*/
public class GameRole {
private String name;
private int attackNum;
private int bloodNum;
public GameRole() {
// TODO Auto-generated constructor stub
}
public GameRole(String name,int attackNum,int bloodNum) {
this.name = name;
this.attackNum = attackNum;
this.bloodNum = bloodNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAttackNum() {
return attackNum;
}
public void setAttackNum(int attackNum) {
this.attackNum = attackNum;
}
public int getBloodNum() {
return bloodNum;
}
public void setBloodNum(int bloodNum) {
this.bloodNum = bloodNum;
}
public GameRole initRole(){
return new GameRole("Enchanter", 100, 100);
}
//save data into Memento
public Memento saveRoleInfo(){
return new Memento(this.attackNum,this.bloodNum);
}
//get the old role info
public boolean getBeforeRoleInfo(Memento memento){
if(memento != null){
this.attackNum = memento.getAttackNum();
this.bloodNum = memento.getBloodNum();
return true;
}
return false;
}
public void fightWithBoss(){
System.out.println("figth with boss");
this.attackNum = this.attackNum/5;
this.bloodNum = this.bloodNum/5;
}
public void displayRoleInfo(){
System.out.println("攻击指数:" +this.attackNum +" ----"+ "血指数:"+this.bloodNum);
}
}
package com.wangbiao.design.memento;
/**
*
* @Title: Memento.java
* @Package com.wangbiao.design.memento
* @Description: TODO
* @author wangbiao
* @date 2014-9-22 下午12:11:12
* @version V1.0
*/
public class Memento {
private int attackNum;
private int bloodNum;
public Memento() {
// TODO Auto-generated constructor stub
}
public Memento(int attackNum,int bloodNum) {
this.attackNum = attackNum;
this.bloodNum = bloodNum;
}
public int getAttackNum() {
return attackNum;
}
public void setAttackNum(int attackNum) {
this.attackNum = attackNum;
}
public int getBloodNum() {
return bloodNum;
}
public void setBloodNum(int bloodNum) {
this.bloodNum = bloodNum;
}
}
package com.wangbiao.design.memento;
/**
*
* @Title: RoleCaretaker.java
* @Package com.wangbiao.design.memento
* @Description: TODO
* @author wangbiao
* @date 2014-9-22 下午12:11:18
* @version V1.0
*/
public class RoleCaretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
/**
* @Title: Client.java
* @Package com.wangbiao.design.memento
* @Description: TODO
* @author wangbiao
* @date 2014-9-22 下午12:11:03
* @version V1.0
*/
package com.wangbiao.design.memento;
/**
* @Title: Client.java
* @Package com.wangbiao.design.memento
* @Description: TODO
* @author wangbiao
* @date 2014-9-22 下午12:11:03
* @version V1.0
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GameRole gameRole = new GameRole();
gameRole = gameRole.initRole();
gameRole.displayRoleInfo();
// store GameRole info to RoleCaretaker
RoleCaretaker caretaker = new RoleCaretaker();
caretaker.setMemento(gameRole.saveRoleInfo());
//fight with boss
gameRole.fightWithBoss();
gameRole.displayRoleInfo();
// get the old role info
gameRole.getBeforeRoleInfo(caretaker.getMemento());
gameRole.displayRoleInfo();
// result
/*
攻击指数:100 ----血指数:100
figth with boss
攻击指数:20 ----血指数:20
攻击指数:100 ----血指数:100
*/
}
}
原文:http://my.oschina.net/u/617909/blog/316961