File tree Expand file tree Collapse file tree 9 files changed +207
-0
lines changed
DesignPattern/src/main/java/com/design Expand file tree Collapse file tree 9 files changed +207
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .design .adapter ;
2
+
3
+ /**
4
+ * 银行适配器
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/1 10:40
8
+ */
9
+ public class BankAdapter {
10
+
11
+ public Rmb changeRmbMoney (Dollar dollar ) {
12
+ return new Rmb (dollar .getAmount () * 7 );
13
+ }
14
+
15
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .adapter ;
2
+
3
+ /**
4
+ * 美元
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/1 10:40
8
+ */
9
+ public class Dollar {
10
+
11
+ private int amount ;
12
+
13
+ public Dollar (int amount ) {
14
+ this .amount = amount ;
15
+ }
16
+
17
+ public int getAmount () {
18
+ return amount ;
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .adapter ;
2
+
3
+ /**
4
+ * 适配器模式是作为两个不兼容的接口之间的桥梁
5
+ * 将一个类的接口转换为期望的另一个接口,使原本不兼容的类可以一起工作
6
+ *
7
+ * @author wliduo[i@dolyw.com]
8
+ * @date 2023/2/1 10:37
9
+ */
10
+ public class Main {
11
+
12
+ public static void main (String [] args ) {
13
+ // 商店购买只能使用人民币
14
+ Shop shop = new Shop ();
15
+ Rmb rmb = new Rmb (100 );
16
+ // 购买成功
17
+ shop .buy (rmb );
18
+ System .out .println ("------------" );
19
+ // 现在有美元无法购买
20
+ Dollar dollar = new Dollar (10 );
21
+ // shop.buy(dollar);
22
+ // 使用银行适配器完成
23
+ BankAdapter bankAdapter = new BankAdapter ();
24
+ shop .buy (bankAdapter .changeRmbMoney (dollar ));
25
+ }
26
+
27
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .adapter ;
2
+
3
+ /**
4
+ * 人民币
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/1 10:40
8
+ */
9
+ public class Rmb {
10
+
11
+ private int amount ;
12
+
13
+ public Rmb (int amount ) {
14
+ this .amount = amount ;
15
+ }
16
+
17
+ public int getAmount () {
18
+ return amount ;
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .adapter ;
2
+
3
+ /**
4
+ * 商店
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/1 11:08
8
+ */
9
+ public class Shop {
10
+
11
+ public void buy (Rmb rmb ) {
12
+ System .out .println ("购买成功,消费" + rmb .getAmount () + "元人民币" );
13
+ }
14
+
15
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .memento ;
2
+
3
+ import java .util .ArrayList ;
4
+ import java .util .List ;
5
+
6
+ /**
7
+ * 游戏记录管理
8
+ *
9
+ * @author wliduo[i@dolyw.com]
10
+ * @date 2023/2/2 10:45
11
+ */
12
+ public class GameCareTaker {
13
+
14
+ private List <GameMemento > gameMementoList = new ArrayList <>();
15
+
16
+ public void add (GameMemento gameMemento ){
17
+ gameMementoList .add (gameMemento );
18
+ }
19
+
20
+ public GameMemento get (int index ){
21
+ return gameMementoList .get (index );
22
+ }
23
+
24
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .memento ;
2
+
3
+ /**
4
+ * 游戏记录
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/2 10:45
8
+ */
9
+ public class GameMemento {
10
+
11
+ private String state ;
12
+
13
+ public GameMemento (String state ){
14
+ this .state = state ;
15
+ }
16
+
17
+ public String getState (){
18
+ return state ;
19
+ }
20
+
21
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .memento ;
2
+
3
+ /**
4
+ * 当前游戏状态
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/2 10:45
8
+ */
9
+ public class GameOriginator {
10
+
11
+ private String state ;
12
+
13
+ public GameOriginator (String state ) {
14
+ this .state = state ;
15
+ }
16
+
17
+ public void setState (String state ){
18
+ this .state = state ;
19
+ }
20
+
21
+ public String getState (){
22
+ return state ;
23
+ }
24
+
25
+ public GameMemento saveMemento (){
26
+ return new GameMemento (state );
27
+ }
28
+
29
+ public void getFromMemento (GameMemento gameMemento ){
30
+ state = gameMemento .getState ();
31
+ }
32
+
33
+ }
Original file line number Diff line number Diff line change
1
+ package com .design .memento ;
2
+
3
+ /**
4
+ * 备忘录模式 - 游戏存档,浏览器历史记录
5
+ *
6
+ * @author wliduo[i@dolyw.com]
7
+ * @date 2023/2/2 10:45
8
+ */
9
+ public class Main {
10
+
11
+ public static void main (String [] args ) {
12
+ GameCareTaker gameCareTaker = new GameCareTaker ();
13
+ // 开始游戏
14
+ GameOriginator gameOriginator = new GameOriginator ("1# 你出生了,你正在新手村出生位置" );
15
+ System .out .println (gameOriginator .getState ());
16
+ // 游戏存档
17
+ gameCareTaker .add (gameOriginator .saveMemento ());
18
+ gameOriginator .setState ("2# 去找村长对话" );
19
+ System .out .println (gameOriginator .getState ());
20
+ // 游戏存档
21
+ gameCareTaker .add (gameOriginator .saveMemento ());
22
+ gameOriginator .setState ("3# 获得任务,杀死史莱姆" );
23
+ System .out .println (gameOriginator .getState ());
24
+ // 游戏读取存档
25
+ gameOriginator .getFromMemento (gameCareTaker .get (1 ));
26
+ System .out .println (gameOriginator .getState ());
27
+ // 游戏读取存档
28
+ gameOriginator .getFromMemento (gameCareTaker .get (0 ));
29
+ System .out .println (gameOriginator .getState ());
30
+ }
31
+
32
+ }
You can’t perform that action at this time.
0 commit comments