定义:保存对象的某个状态,以便在适当的时候恢复对象,备忘录模式属于行为型模式。
优点:给用户提供了一种可以保存状态的机制,可以让用户回到历史状态,而且这个过程不需要用户去关注保存的细节。
缺点:如果对象的成员变量过多,保存状态则需要耗费大量资源
举个栗子:
目标对象类:
public class TargetObject {
private String state;
public TargetObject(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public MemoryObject saveState(){
return new MemoryObject(state);
}
public void retrivestate(MemoryObject memoryObject){
state=memoryObject.getState();
}
}
状态类:public class MemoryObject {
private String state;
public MemoryObject(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
状态管理类:
public class ManageStateUtil {
private static List<MemoryObject> memoryObjectList=new ArrayList<>();
public static void addMemoryObject(MemoryObject memoryObject){
memoryObjectList.add(memoryObject);
}
public static MemoryObject getMemoryObject(int index){
return memoryObjectList.get(index);
}
}
client:
TargetObject targetObject = new TargetObject("state001");
targetObject.setState("state002");
ManageStateUtil.addMemoryObject(targetObject.saveState());
targetObject.setState("state003");
ManageStateUtil.addMemoryObject(targetObject.saveState());
targetObject.setState("state004");
Log.d(TAG, "onCreate: "+targetObject.getState());
targetObject.retrivestate(ManageStateUtil.getMemoryObject(0));
Log.d(TAG, "onCreate: "+targetObject.getState());
targetObject.retrivestate(ManageStateUtil.getMemoryObject(1));
Log.d(TAG, "onCreate: "+targetObject.getState());
输出: