Skip to content

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy