备忘录模式
设计原则:遵循迪米特、开闭原则
常用场景:需要在对象的外部保存该对象的内部状态
使用概率:5%
复杂度:中
变化点:无
选择关键点:是否可以在必要的时候捕捉到对象的内部状态
逆鳞:大对象的备份
主要思想:
简单理解就是把对象的变化保存起来进行备份,可以恢复
简单实现在每次对象属性变化前把属性存起来,或者暴力的直接深克隆对象,然后把对象存起来.
public class Person {
private String name;
private Stack<String> nameRecordStack=new Stack<>();
//当然也可以扩展 把备份和恢复提出去
private void restoreName(){
if(nameRecordStack!=null&&nameRecordStack.size()!=0){
this.name=nameRecordStack.pop();
}
}
public String getName() {
return name;
}
public void setName(String name) {
nameRecordStack.push(name);
this.name = name;
}
}