File tree Expand file tree Collapse file tree
src/designpattern/memento Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments