關鍵命令調用類:
1
/**
2
* 該類持有Command抽象類,action方法即可調用
3
* Command的子類方法名稱都為execute
4
**/
5
public class invoker{
6
private Command command;
7
public setCommand(Command command){
8
this.command = command
9
}
10
public void action(){
11
this.command.execute();
12
}
13
}
Command抽象類,里面只含有execute()方法,所以其子類構造參數為命令執行者,并且持有命令執行者對象,execute方法里面即為命令執行者對象.方法
2

3

4

5

6

7

8

9

10

11

12

13

1
public abstract class Command{
2
public abstract void execute();
3
}
4
5
public class Command1 extends Command{
6
private Receiver receiver;
7
public Command1(Receiver receiver){
8
this.receiver = receiver;
9
}
10
@Override
11
public void execute(){
12
receiver.doSomething();
13
}
14
}
以上Receiver就是具體的執行對象(抽象類),該模式體現了高內聚的特點,缺點為有N個命令就會有N個子類,導致類膨脹。

2

3

4

5

6

7

8

9

10

11

12

13

14
