Skip to content

Commit 4ebf6fd

Browse files
author
Liu Yuning
committed
add memento DP
1 parent 03869fa commit 4ebf6fd

4 files changed

Lines changed: 108 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package designpattern.memento;
2+
3+
/**
4+
* 管理者(CareTaker)类:管理备忘录
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class CareTaker {
10+
11+
private Memento memento;
12+
13+
public Memento getMemento() {
14+
return memento;
15+
}
16+
17+
public void setMemento(Memento memento) {
18+
this.memento = memento;
19+
}
20+
21+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package designpattern.memento;
2+
3+
/**
4+
* 备忘录(Memento)类
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class Memento {
10+
private String state;
11+
12+
public Memento(String state) {
13+
this.state = state;
14+
}
15+
16+
public String getState() {
17+
return state;
18+
}
19+
20+
public void setState(String state) {
21+
this.state = state;
22+
}
23+
24+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package designpattern.memento;
2+
3+
/**
4+
* 客户端
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class MementoClient {
10+
11+
public static void main(String[] args) {
12+
// 设置初始状态
13+
Originator originator = new Originator();
14+
originator.setState("On");
15+
originator.show();
16+
17+
// 管理者通过备忘录保存状态,由于有了很好地封装,可以隐藏Originator的实现细节
18+
CareTaker careTaker = new CareTaker();
19+
careTaker.setMemento(originator.createMemento());
20+
21+
// 改变状态
22+
originator.setState("Off");
23+
originator.show();
24+
25+
// 通过管理者从备忘录中恢复状态
26+
originator.recoverMemento(careTaker.getMemento());
27+
originator.show();
28+
}
29+
30+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package designpattern.memento;
2+
3+
/**
4+
* 发起人(Originator) 类
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class Originator {
10+
11+
private String state;
12+
13+
public Memento createMemento() {
14+
return new Memento(this.state);
15+
}
16+
17+
public void recoverMemento(Memento memento) {
18+
this.setState(memento.getState());
19+
}
20+
21+
public void show() {
22+
System.out.println("state = " + this.state);
23+
}
24+
25+
public String getState() {
26+
return state;
27+
}
28+
29+
public void setState(String state) {
30+
this.state = state;
31+
}
32+
33+
}

0 commit comments

Comments
 (0)