回到目錄
概述
命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,它將請(qǐng)求封裝成一個(gè)對(duì)象,從而允許我們根據(jù)不同的請(qǐng)求將客戶端參數(shù)化,并且能夠?qū)⒄?qǐng)求排隊(duì)或記錄請(qǐng)求日志、支持撤銷操作等。該模式使得請(qǐng)求的發(fā)送者和接收者解耦。
使用命令模式的主要目的是將方法調(diào)用封裝成對(duì)象,這樣可以在不同的上下文中使用不同的請(qǐng)求、隊(duì)列或日志來(lái)參數(shù)化其他對(duì)象。這使得請(qǐng)求的發(fā)送者和接收者之間的耦合度降低,并且能夠靈活地?cái)U(kuò)展和變化請(qǐng)求的處理。
包含的對(duì)象
命令模式的主要參與者包括:
- Command(命令):聲明執(zhí)行操作的接口,通常包含執(zhí)行方法
execute()
。 - ConcreteCommand(具體命令):實(shí)現(xiàn)
Command
接口,將一個(gè)接收者對(duì)象綁定于一個(gè)動(dòng)作,并實(shí)現(xiàn)執(zhí)行方法。 - Receiver(接收者):執(zhí)行命令的相關(guān)操作,是具體業(yè)務(wù)邏輯的實(shí)際執(zhí)行者。
- Invoker(調(diào)用者):發(fā)出具體命令并要求命令執(zhí)行請(qǐng)求的對(duì)象。
- Client(客戶端):創(chuàng)建具體命令對(duì)象并設(shè)置其接收者。
在代碼中的體現(xiàn)
以下是一個(gè)使用命令模式的簡(jiǎn)單示例,以控制電燈的開(kāi)關(guān)操作為例:
- 定義命令接口和具體命令類:
// Command(命令)
public interface Command {
void execute();
}
// ConcreteCommand(具體命令)
public class LightOnCommand implements Command {
private Light light;
public LightOnCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.turnOn();
}
}
- 定義接收者類:
// Receiver(接收者)
public class Light {
public void turnOn() {
System.out.println("Light turned on");
}
public void turnOff() {
System.out.println("Light turned off");
}
}
- 定義調(diào)用者類:
// Invoker(調(diào)用者)
public class RemoteControl {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
- 客戶端代碼示例:
// Client(客戶端)
public class Main {
public static void main(String[] args) {
// 創(chuàng)建接收者對(duì)象
Light light = new Light();
// 創(chuàng)建具體命令對(duì)象并設(shè)置接收者
Command lightOnCommand = new LightOnCommand(light);
// 創(chuàng)建調(diào)用者對(duì)象并設(shè)置命令
RemoteControl remoteControl = new RemoteControl();
remoteControl.setCommand(lightOnCommand);
// 執(zhí)行命令
remoteControl.pressButton();
}
}
在上述示例中,命令模式的主要參與者包括 Command
接口和 LightOnCommand
具體命令類。Light
類作為接收者執(zhí)行實(shí)際的命令操作。RemoteControl
類作為調(diào)用者負(fù)責(zé)接收命令并執(zhí)行。客戶端代碼創(chuàng)建接收者對(duì)象、具體命令對(duì)象和調(diào)用者對(duì)象,并將它們組合在一起進(jìn)行命令的執(zhí)行。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-504070.html
通過(guò)命令模式,我們可以將控制電燈開(kāi)關(guān)的操作封裝成一個(gè)命令對(duì)象,使得命令的發(fā)送者和接收者解耦,且能夠動(dòng)態(tài)地設(shè)置命令并執(zhí)行。這樣的設(shè)計(jì)可以方便地?cái)U(kuò)展和修改命令的處理邏輯,以及支持命令的撤銷和重做操作等。
回到目錄文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504070.html
到了這里,關(guān)于說(shuō)說(shuō)設(shè)計(jì)模式~命令模式(command)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!