感覺像無序廣播,oc的通知
命令模式很好理解,舉個例子,司令員下令讓士兵去干件事情,從整個事情的角度來考慮,司令員的作用是,發(fā)出口令,口令經(jīng)過傳遞,傳到了士兵耳朵里,士兵去執(zhí)行。這個過程好在,三者相互解耦,任何一方都不用去依賴其他人,只需要做好自己的事兒就行,司令員要的是結(jié)果,不會去關(guān)注到底士兵是怎么實現(xiàn)的
Invoker是調(diào)用者(司令員),Receiver是被調(diào)用者(士兵),MyCommand是命令,實現(xiàn)了Command接口,持有接收對象,看實現(xiàn)代碼:
//命令(需要知道穿給誰)
public interface Command {
public void exe();
}
public class MyCommand implements Command {
private Receiver receiver;
public MyCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void exe() {
receiver.action();
}
}
//調(diào)用者(司令員,需要知道命令是啥)
public class Invoker {
private Command command;
public Invoker(Command command) {
this.command = command;
}
public void action(){
command.exe();
}
}
//被調(diào)用者(士兵,啥都不需要知道)
public class Receiver {
public void action(){
System.out.println("command received!");
}
}
使用
public class Test {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command cmd = new MyCommand(receiver); //知道穿給誰
Invoker invoker = new Invoker(cmd); //知道命令
invoker.action(); //發(fā)送命令
}
}
綜上:司令員拿著命令,然后發(fā)出去,命令自己去尋找士兵,
士兵看到后工作