命令模式
定義
將一個請求封裝爲一個對象,從而使我們可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日誌,以及支持可撤銷的操作。命令模式是一種對象行爲型模式,其別名爲動作(Action)模式或事務(Transaction)模式。
角色
1.命令抽象接口
2.請求結構體
例子
一個盒子上的按鈕執行
//命令抽象接口
type Command interface {
Execute()
}
//請求結構體
type Box struct {
buttion1 Command
buttion2 Command
}
//抽象請求對象
func NewBox(buttion1, buttion2 Command) *Box {
return &Box{
buttion1: buttion1,
buttion2: buttion2,
}
}
//封裝命令執行函數
func (b *Box) PressButtion1() {
b.buttion1.Execute()
}
//封裝命令執行函數
func (b *Box) PressButtion2() {
b.buttion2.Execute()
}
總結
此模式主要是對實際的命令執行進行抽象與請求解耦,請求邏輯封裝成對象可以改變,當請求邏輯變化後不影響執行邏輯。