設計模式(行爲型模式)——命令模式(Command)

命令模式很好理解,舉個例子,司令員下令讓士兵去幹件事情,從整個事情的角度來考慮,司令員的做用是,發出口令,口令通過傳遞,傳到了士兵耳朵裏,士兵去執行。這個過程好在,三者相互解耦,任何一方都不用去依賴其餘人,只須要作好本身的事兒就行,司令員要的是結果,不會去關注到底士兵是怎麼實現的。咱們看看關係圖:java

Invoker是調用者(司令員),Receiver是被調用者(士兵),MyCommand是命令,實現了Command接口,持有接收對象,看實現代碼:設計模式

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();  
    }  
}
public class Receiver {  
    public void action(){  
        System.out.println("command received!");  
    }  
}
public class Invoker {  
      
    private Command command;  
      
    public Invoker(Command command) {  
        this.command = command;  
    }  
  
    public void action(){  
        command.exe();  
    }  
}
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();  
    }  
}

輸出:command received!框架

這個很哈理解,命令模式的目的就是達到命令的發出者和執行者之間解耦,實現請求和執行分開,熟悉Struts的同窗應該知道,Struts其實就是一種將請求和呈現分離的技術,其中必然涉及命令模式的思想!ide

其實每一個設計模式都是很重要的一種思想,看上去很熟,實際上是由於咱們在學到的東西中都有涉及,儘管有時咱們並不知道,其實在Java自己的設計之中到處都有體現,像AWT、JDBC、集合類、IO管道或者是Web框架,裏面設計模式無處不在。由於咱們篇幅有限,很難講每個設計模式都講的很詳細,不過我會盡我所能,儘可能在有限的空間和篇幅內,把意思寫清楚了,更好讓你們明白。本章不出意外的話,應該是設計模式最後一講了,首先仍是上一下上篇開頭的那個圖:this

相關文章
相關標籤/搜索