設計模式學習(二十一):命令模式
設計模式學習(二十一):命令模式
作者:Grey
原文地址:
命令模式
命令模式是一種行為型模式。
通過調用者調用接受者執行命令,執行順序是:
調用者→命令→接受者
```,
如下示例,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 圖如下
命令模式應用
-
結合責任鏈模式實現多次 undo;
-
結合組合模式實現宏命令;
-
結合備忘錄模式實現事務回滾;