-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path备忘录模式主程序.java
145 lines (113 loc) · 3.55 KB
/
备忘录模式主程序.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package person.nightrunner;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
/**
* 备忘录模式可以实现存档
*/
public class 备忘录模式主程序 {
public static void main(String[] args) {
List<存档> 存档集合 = new ArrayList<>();
恶魔猎手 恶魔猎手 = new 恶魔猎手("伊利丹");
恶魔猎手.显示状态();
存档集合.add(恶魔猎手.获取存档());
恶魔猎手.当前地点 = "暴风城";
恶魔猎手.血量 = 10;
恶魔猎手.蓝量 = 0;
恶魔猎手.显示状态();
存档集合.add(恶魔猎手.获取存档());
恶魔猎手.血量 = 0;
恶魔猎手.蓝量 = 0;
恶魔猎手.显示状态();
int 存档下标 = -1;
do {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 存档集合.size(); i++) {
System.out.println(i + ":" + 存档集合.get(i).摘要);
}
System.out.print("请输入要恢复存档的数字:");
int 下标 = 存档下标 = sc.nextInt();
if (下标 < 0 || 下标 > (存档集合.size() - 1)) {
System.out.println("输入错误,请重新输入");
} else {
break;
}
} while (true);
恶魔猎手.恢复存档(存档集合.get(存档下标));
恶魔猎手.显示状态();
}
}
interface 角色 {
存档 获取存档();
void 恢复存档(存档 存档);
void 显示状态();
}
abstract class 角色默认抽象实现 implements 角色 {
String 当前地点 = "玛顿";
Integer 血量 = 200;
Integer 蓝量 = 300;
final String 姓名;
public 角色默认抽象实现(String 姓名) {
this.姓名 = 姓名;
}
@Override
public 存档 获取存档() {
存档 存档 = new 存档();
存档.地点 = 当前地点;
存档.血量 = 血量;
存档.蓝量 = 蓝量;
存档.时间 = new Date();
存档.摘要 = this.toString();
System.out.println(this.getClass().getSimpleName() + "保存存档:" + 存档);
return 存档;
}
public void 恢复存档(存档 存档) {
this.血量 = 存档.血量;
this.蓝量 = 存档.蓝量;
this.当前地点 = 存档.地点;
System.out.println(this.getClass().getSimpleName() + "恢复存档:" + 存档);
}
@Override
public String toString() {
return this.getClass().getSimpleName() + ":" + 姓名 + "{" +
"当前地点=" + 当前地点 +
", 血量=" + 血量 +
", 蓝量=" + 蓝量 +
'}';
}
@Override
public void 显示状态() {
if (血量 < 1) {
System.out.println(this.getClass().getSimpleName() + ":" + 姓名 + "挂了");
} else {
System.out.println(this);
}
}
}
class 恶魔猎手 extends 角色默认抽象实现 {
public 恶魔猎手(String 昵称) {
super(昵称);
}
}
interface 备忘录 {
}
class 存档 implements 备忘录 {
public 存档() {
}
Date 时间;
String 摘要;
String 地点;
Integer 血量;
Integer 蓝量;
@Override
public String toString() {
return "存档{" +
"时间=" + 时间 +
", 摘要='" + 摘要 + '\'' +
", 地点=" + 地点 +
", 血量=" + 血量 +
", 蓝量=" + 蓝量 +
'}';
}
}