JAVA設計模式(15):行為型-命令模式(Command)

來源:互聯網
上載者:User

標籤:java   設計模式   命令模式   

介紹
命令模式:將一個請求封裝為一個對象,從而使我們可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日誌,以及支援可撤銷的操作。也稱之為:動作Action模式、事務transaction模式。


結構

Command抽象命令類

  • 定義命令的介面,聲明執行的方法。

ConcreteCommand具體命令類

  • 命令介面實現對象,是“虛”的實現;通常會持有接收者,並調用接收者的功能來完成命令要執行的操作。

Invoker調用者/要求者
  • 請求的寄件者,它通過命令對象來執行請求。一個調用者並不需要在設計時確定其接受者,因此它只與抽象命令類之間存在關聯。在程式運行時,將調用命令對象的execute(),間接調用接收者的相關操作。
Receiver接受者
  • 接受者執行與請求相關的操作,具體實現對請求的業務處理
  • 未抽象前,實際執行操作內容的對象。
Client客戶類
  • 在客戶類中需要建立調用者對象、具體命令對象,在建立具體命令對象時指定對應的接收者。寄件者和接收者之間沒有直接關係,都通過命令對象間接調用
public interface Command{public void execute();}class ConcreteCommand implements Command{private Receiver receiver;public ConcreteCommand(Receiver receiver) {super();this.receiver = receiver;}@Overridepublic void execute() {// TODO Auto-generated method stubreceiver.action();}}/** * 調用者、發起者 */public class Invoke {private Command command;public Invoke(Command command) {super();this.command = command;}/*業務方法,用於調用命令的方法*/public void call(){command.execute();}}public class Receiver {public void action(){System.out.println("action");}}public class Client {public static void main(String[] args) {// TODO Auto-generated method stubCommand command = new ConcreteCommand(new Receiver());Invoke Invoke = new Invoke(command);Invoke.call();}}

開發中常見的情境
  • Struts2中,action的整個調用過程中就有命令模式。
  • 資料庫事務機制的底層實現
  • 命令的撤銷和恢複

JAVA設計模式(15):行為型-命令模式(Command)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.