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
package com.tomkk.dp;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

abstract class {
abstract void excecute();

abstract void unDo();
}

class ShoppingCmd extends {


void excecute() {
System.out.println("陪着逛商场。。。");
}


void unDo() {
System.out.println("回家啦~~");
}
}

class Boy{
private List<Command> commondList = new ArrayList<>();
private Stack<Command> commandHistory = new Stack<>();

public void addCommand(Command command) {
commondList.add(command);
}

public void doCommands() {
for (Command c : commondList) {
c.excecute();

commandHistory.push(c);
}
}

public void unDo() {
if (!commandHistory.empty()) {
commandHistory.peek().unDo();
commandHistory.pop();
}
}
}

class MM{

public void order(Boy boy) {
Command cmd = new ShoppingCmd();
boy.addCommand(cmd);

boy.doCommands();
}

public void regret(Boy boy) {
boy.unDo();
}

}

public class Main {

public static void main(String[] args) {
MM mm = new MM();
Boy boy = new Boy();

mm.order(boy);
mm.regret(boy);
}

}