設計模式學習(二十一):命令模式

設計模式學習(二十一):命令模式

作者:Grey

原文地址:

部落格園:設計模式學習(二十一):命令模式

CSDN:設計模式學習(二十一):命令模式

命令模式

命令模式是一種行為型模式。

通過調用者調用接受者執行命令,執行順序是:

調用者→命令→接受者

```,

如下示例,CopyCommand 中的 `doit()`方法,就是執行這個 copy 的命令,undo 就是撤銷上一次執行的命令,我們可以抽象出 Command 這個介面:

```java
public interface Command {
    void doit();

    void undo();
}

CopyCommand 實現這個介面,並實現doit()undo()這兩個方法,其他的命令也可以類似的實現出來

public class CopyCommand implements Command {
    private Content content;

    public CopyCommand(Content content) {
        this.content = content;
    }

    @Override
    public void doit() {
        content.msg = content.msg + content.msg;
    }

    @Override
    public void undo() {
        content.msg = content.msg.substring(0, content.msg.length() / 2);
    }
}

上述示例的 UML 圖如下

image

命令模式應用

  • 結合責任鏈模式實現多次 undo;

  • 結合組合模式實現宏命令;

  • 結合備忘錄模式實現事務回滾;

UML 和 程式碼

UML 圖

程式碼

更多

設計模式學習專欄

參考資料