設計模式 命令模式

2021-08-14 02:56:25 字數 2417 閱讀 7248

一、什麼是命令模式?

命令模式將乙個請求封裝成乙個物件,從而可以對不同的請求作出不同的回應。比如在公司,老闆發出一條命令給小組leader,leader又派發給手下的組員。這個過程使老闆、命令、leader和執行命令的組員幾者解耦,任何一方都不用去依賴其他人,只需要做好自己分內的事情,老闆只需要結果,他並不需要知道到底哪個員工完成了命令,員工也不需要知道這個命令是誰發布的,只需要按照leader的吩咐去完成即可。

命令模式涉及到以下幾個角色:

1. 抽象命令角色:定義了具體命令需要實現的抽象方法或介面

2. 具體命令角色:指定了具體命令的執行

3. 請求者(invoker)角色:呼叫命令物件執行請求

4. 接收者(receiver)角色:真正執行請求的物件

5. 客戶端角色:建立具體命令物件並可以設定接收者

舉乙個簡單易懂的例子——看電視:電視有三種功能(簡單來看)——開啟,調台,關閉。當使用者要對電視進行操作時,一般是通過遙控器來操作:使用者要開啟電視,首先按住遙控器的開機按鍵,遙控器發指令給電視,電視再開啟。這個例子在命令模式中,使用者就是客戶端角色,遙控器是請求者角色,開機,調台等功能就是具體的命令,而電視機就是接收者。

二、命令模式框圖

三、命令模式的具體實現**

3.1 command——抽象命令介面

package designpatterns.command;

/** * created by olive on 2017/12/26.

*/public inte***ce command

3.2 commandon、commandoff、commandchangechanneln——具體的命令,分別代表開啟、關閉和調台三個具體操作,實現了command介面

package designpatterns.command;

/** * created by olive on 2017/12/26.

*/public class commandon implements command

public void execute()

}public class commandoff implements command

public void execute()

}public class commandchangechannel implements command

public void execute()

}

3.3 tv——電視機,也就是接收者

package designpatterns.command;

/** * created by olive on 2017/12/26.

*/public class tv

public void turnoff()

public void changechannel(int channel)

}

3.4 remotecontrol——遙控器,呼叫者

package designpatterns.command;

/** * created by olive on 2017/12/26.

*/public class remotecontrol

public void turnon()

public void turnoff()

public void changechannel()

}

3.5 client——客戶端

package designpatterns.command;

/** * created by olive on 2017/12/26.

*/public class client

}

3.6 結果

turn on the tv

channel is: 3

turn on the tv

process finished with exit code 0

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象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...