設計模式 命令模式

2021-09-12 16:33:13 字數 1531 閱讀 3273

命令模式:將「請求」封裝成物件,以便使用不同的請求、佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。

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...