Java23种设计模式
定义:用来存储对象内部状态的设计模式。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态外部存储起来,在合适的时候还原状态。
需求:设置一个对象A,里面初始化一个int值5,然后对该值进行自增10次,然后恢复自增之前的值。
- 创建保存状态的类State
public class State {
private int num;
public State(int num) {
this.num = num;
}
public int getNum() {
return num;
}
}
- 创建A状态,里面有有对象num,并且有保存和读取状态的方法
public class A {
private int num;
public A(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public State saveState(){
return new State(num);
}
public void getState(State state){
num = state.getNum();
}
}
- 创建经理人CarTaker,用于管理状态存储的操作。
public class CarTaker {
private List<State> list = new ArrayList<>();
public void addState(State state){
list.add(state);
}
public State getState(int position){
return list.get(position);
}
}
- 测试,赋值5,然后自增加10次,然后打印当前值,再恢复状态,打印当前值。
public class Test {
public static void main(String[] args) {
A a = new A(5);
CarTaker carTaker = new CarTaker();
carTaker.addState(a.saveState());
for(int i = 0;i<10;i++){
a.setNum(a.getNum()+1);
}
System.out.print("num的值是"+a.getNum()+"\n");
a.getState(carTaker.getState(0));
System.out.print("num的值是"+a.getNum()+"\n");
}
}
打印结果:
num的值是15
num的值是5
必备元素:需要保存状态的对象、保存状态的对象、保存状态经理类。