Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
无难事者若执
23种设计模式
提交
aed20e66
23种设计模式
项目概览
无难事者若执
/
23种设计模式
与 Fork 源项目一致
Fork自
inscode / Java
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
23种设计模式
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
aed20e66
编写于
10月 20, 2023
作者:
E
ex_kongxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(备忘录模式):create
上级
8a75c0b8
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
238 addition
and
0 deletion
+238
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/GameMemento.java
...gxiang/raindrop/dp/type/behavior/memento/GameMemento.java
+35
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/HistoryMemento.java
...ang/raindrop/dp/type/behavior/memento/HistoryMemento.java
+36
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/HostGame.java
...kongxiang/raindrop/dp/type/behavior/memento/HostGame.java
+75
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/HostGamePlayerMain.java
...raindrop/dp/type/behavior/memento/HostGamePlayerMain.java
+62
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.png
...com/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.png
+0
-0
java/com/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.puml
...om/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.puml
+30
-0
未找到文件。
java/com/kongxiang/raindrop/dp/type/behavior/memento/GameMemento.java
0 → 100644
浏览文件 @
aed20e66
package
com.kongxiang.raindrop.dp.type.behavior.memento
;
import
lombok.ToString
;
import
java.util.List
;
/**
* 游戏存档(Memento)
*
* @author 孔翔
* @since 2023-10-20
* copyright for author : 孔翔 at 2023-10-20
* dp
*/
@ToString
public
class
GameMemento
{
private
int
level
;
private
List
<
String
>
equipment
;
public
GameMemento
(
int
level
,
List
<
String
>
equipment
)
{
this
.
level
=
level
;
this
.
equipment
=
equipment
;
}
public
int
getLevel
()
{
return
level
;
}
public
List
<
String
>
getEquipment
()
{
return
equipment
;
}
}
java/com/kongxiang/raindrop/dp/type/behavior/memento/HistoryMemento.java
0 → 100644
浏览文件 @
aed20e66
package
com.kongxiang.raindrop.dp.type.behavior.memento
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* 历史备份(CareTaker)
* 管理备份
*
* @author 孔翔
* @since 2023-10-20
* copyright for author : 孔翔 at 2023-10-20
* dp
*/
public
class
HistoryMemento
{
private
static
final
List
<
GameMemento
>
history
=
new
LinkedList
<>();
/**
* 保存存档(备忘录)
*/
public
void
addHistory
(
GameMemento
game
)
{
history
.
add
(
game
);
}
/**
* 选择指定的存档(备忘录)
*/
public
GameMemento
loadHistory
(
int
index
)
{
return
history
.
get
(
index
);
}
public
void
list
()
{
history
.
forEach
(
System
.
out
::
println
);
}
}
java/com/kongxiang/raindrop/dp/type/behavior/memento/HostGame.java
0 → 100644
浏览文件 @
aed20e66
package
com.kongxiang.raindrop.dp.type.behavior.memento
;
import
lombok.Getter
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.UUID
;
/**
* 主机游戏(Originator)
*
* @author 孔翔
* @since 2023-10-20
* copyright for author : 孔翔 at 2023-10-20
* dp
*/
@Getter
public
class
HostGame
{
/**
* 人物登记
*/
private
int
level
;
/**
* 装备
*/
private
List
<
String
>
equipment
;
/**
* 开始游戏 新开始
*/
public
void
newPlay
()
{
this
.
level
=
0
;
this
.
equipment
=
new
ArrayList
<>();
}
/*
*打怪
*/
public
String
attack
()
{
// 升级
level
++;
return
UUID
.
randomUUID
().
toString
().
substring
(
20
,
34
)+
":装备衣服 : level"
+
(
level
+
10
-
(
level
%
10
)
+
" 级 - "
+
((
int
)(
Math
.
random
()*
10
%
3
)+
1
)
+
"⭐品质"
);
}
/**
* 拾取
*/
public
void
pickup
(
String
equipment
)
throws
Exception
{
if
(
this
.
equipment
.
size
()
>=
30
)
{
throw
new
Exception
(
"装备背包不足,请购买"
);
}
this
.
equipment
.
add
(
equipment
);
}
/**
* 保存备份
*/
public
GameMemento
saveGame
()
{
List
<
String
>
backup
=
new
LinkedList
<>();
backup
.
addAll
(
this
.
equipment
);
return
new
GameMemento
(
this
.
level
,
backup
);
}
/**
* 加载之前的游戏备份
*/
public
void
loadGame
(
GameMemento
gameMemento
)
{
this
.
level
=
gameMemento
.
getLevel
();
this
.
equipment
=
gameMemento
.
getEquipment
();
}
}
java/com/kongxiang/raindrop/dp/type/behavior/memento/HostGamePlayerMain.java
0 → 100644
浏览文件 @
aed20e66
package
com.kongxiang.raindrop.dp.type.behavior.memento
;
/**
* @author 孔翔
* @since 2023-10-20
* copyright for author : 孔翔 at 2023-10-20
* dp
*/
public
class
HostGamePlayerMain
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
HostGame
player
=
new
HostGame
();
HistoryMemento
history
=
new
HistoryMemento
();
// 新游戏刚入手,开始体验
player
.
newPlay
();
// 打怪,升级,爆装备
String
eq
=
player
.
attack
();
// 拾取装备
player
.
pickup
(
eq
);
eq
=
player
.
attack
();
player
.
pickup
(
eq
);
System
.
out
.
println
(
"高等级极品装备"
);
// 备份
GameMemento
gameMemento
=
player
.
saveGame
();
history
.
addHistory
(
gameMemento
);
for
(
int
i
=
0
;
i
<
23
;
i
++)
{
System
.
out
.
println
(
"打怪升级捡装备"
);
eq
=
player
.
attack
();
player
.
pickup
(
eq
);
// 每五次备份一次
if
(
i
%
5
==
0
)
{
// 备份
gameMemento
=
player
.
saveGame
();
history
.
addHistory
(
gameMemento
);
}
}
System
.
out
.
println
(
"---------- 当期的玩家数据 ------------"
);
System
.
out
.
println
(
" level:"
+
player
.
getLevel
()
);
System
.
out
.
println
(
" 装备列表 :"
);
player
.
getEquipment
().
forEach
(
System
.
out
::
println
);
System
.
out
.
println
(
"-----------------------------------"
);
System
.
out
.
println
(
"查看备份列表"
);
history
.
list
();
System
.
out
.
println
(
"回退到第3个存档,重新打boss"
);
GameMemento
gameMemento1
=
history
.
loadHistory
(
3
-
1
);
player
.
loadGame
(
gameMemento1
);
System
.
out
.
println
(
"---------- 当期的玩家数据 ------------"
);
System
.
out
.
println
(
" level:"
+
player
.
getLevel
()
);
System
.
out
.
println
(
" 装备列表 :"
);
player
.
getEquipment
().
forEach
(
System
.
out
::
println
);
System
.
out
.
println
(
"-----------------------------------"
);
System
.
out
.
println
(
"查看备份列表"
);
history
.
list
();
}
}
java/com/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.png
0 → 100644
浏览文件 @
aed20e66
12.9 KB
java/com/kongxiang/raindrop/dp/type/behavior/memento/备忘录模式.puml
0 → 100644
浏览文件 @
aed20e66
@startuml
'https://plantuml.com/sequence-diagram
skinparam linetype ortho
class Originator {
- state;
public changeState();
public Memento createMemento()
public void loadMemento(Memento)
}
class Memento {
- state...;
- setState(state);
- getState();
}
class CareTaker {
- List<Memento> list ;
- save(Memento)
- get():Memento
}
CareTaker o--> Memento
Originator --> Memento
@enduml
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录