8000 命令模式 · Folgerjun/DesignPatterns-Java@10f2cb6 · GitHub
[go: up one dir, main page]

Skip to content
< 8000 /react-partial>

Commit 10f2cb6

Browse files
authored
命令模式
命令模式
1 parent 1531bc0 commit 10f2cb6

File tree

8 files changed

+117
-0
lines changed

8 files changed

+117
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.java.design.command;
2+
3+
public interface AbstractAction {
4+
5+
void excute();
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.java.design.command;
2+
3+
public abstract class AbstractReceiver {
4+
5+
abstract void cook();
6+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.java.design.command;
2+
3+
public class ActionA implements AbstractAction {
4+
5+
private AbstractReceiver abstractReceiver;
6+
7+
public ActionA(AbstractReceiver abstractReceiver) {
8+
9+
this.abstractReceiver = abstractReceiver;
10+
}
11+
12+
@Override
13+
public void excute() {
14+
15+
System.out.println("命令A发布 ...");
16+
this.abstractReceiver.cook();
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.java.design.command;
2+
3+
public class ActionB implements AbstractAction {
4+
5+
private AbstractReceiver abstractReceiver;
6+
7+
public ActionB(AbstractReceiver abstractReceiver) {
8+
9+
this.abstractReceiver = abstractReceiver;
10+
}
11+
12+
@Override
13+
public void excute() {
14+
15+
System.out.println("命令B发布 ...");
16+
this.abstractReceiver.cook();
17+
}
18+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.java.design.command;
2+
3+
/**
4+
* 命令模式 ----->
5+
* 显而易见,是将命令和实际操作相隔离,解耦合,客户端只发出命令,具体的操作不需要关心,只需要完成任务。举个很简单的例子,用户点菜,然后厨师做菜,
6+
* 根据点菜的口味不同厨师做不同的菜
7+
*
8+
* @author Administrator
9+
*
10+
*/
11+
public class CommandPattern {
12+
13+
public static void main(String[] args) {
14+
15+
// 创建调用者
16+
Invoker invoker = new Invoker();
17+
18+
// 创建命令接收者
19+
AbstractReceiver abstractReceiver = new ReceiverA();
20+
21+
// 创建命令,传入接收者
22+
AbstractAction abstractAction = new ActionA(abstractReceiver);
23+
// AbstractAction abstractAction = new ActionB(abstractReceiver);
24+
25+
// 发布命令
26+
invoker.setAbstractAction(abstractAction);
27+
28+
// 执行命令
29+
invoker.action();
30+
}
31+
32+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.java.design.command;
2+
3+
public class Invoker {
4+
5+
private AbstractAction abstractAction;
6+
7+
public void setAbstractAction(AbstractAction abstractAction) {
8+
this.abstractAction = abstractAction;
9+
}
10+
11+
public void action() {
12+
13+
this.abstractAction.excute();
14+
}
15+
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.java.design.command;
2+
3+
public class ReceiverA extends AbstractReceiver {
4+
5+
@Override
6+
void cook() {
7+
8+
System.out.println("成功接收到命令A 并执行完毕 ...");
9+
}
10+
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.java.design.command;
2+
3+
public class ReceiverB extends AbstractReceiver {
4+
5+
@Override
6+
void cook() {
7+
8+
System.out.println("成功接收到命令B 并执行完毕 ...");
9+
}
10+
}

0 commit comments

Comments
 (0)
0