命令模式:將「請求」封裝成物件,以便使用不同的請求、佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。
package main
import "fmt"
//燈type light struct
func (l light) on()
func (l light) off()
/*1.吊扇高、中、低檔可以分為3個命令。
2.遙控器乙個按鈕執行一組動作:設定命令巨集,巨集中包含commands,命令巨集execute()時會執行這組命令。
*///命令介面
type command inte***ce
//無命令
type nocommand struct
func (nocommand) execute()
func (nocommand) undo()
//開燈命令
type lightoncommand struct
func (l lightoncommand) execute()
func (l lightoncommand) undo()
//關燈命令
type lightoffcommand struct
func (l lightoffcommand) execute()
func (l lightoffcommand) undo()
//遙控器
type remotecontrol struct
func newremotecontrol() *remotecontrol
for i:=0;i<7;i++
} for i:=0;i<7;i++
} res.undocommand = nocommand{}
return res
}func(r *remotecontrol) setcommand(slot int, oncommand command, offcommand command)()
func (r *remotecontrol) onbuttonwaspushed(slot int)
func (r *remotecontrol) offbuttonwaspushed(slot int)
func (r remotecontrol) undobuttonwaspushed()
func main ()
lightoncommand := lightoncommand
lightoffcommand := lightoffcommand
remotecontrol := newremotecontrol()
remotecontrol.setcommand(0, lightoncommand, lightoffcommand)
remotecontrol.onbuttonwaspushed(0)
remotecontrol.offbuttonwaspushed(0)
remotecontrol.undobuttonwaspushed()
}
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...
設計模式 命令模式
1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...