01-命令模式 - 设计模式教程 - C语言网

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

编程教程 (/course/) 编程问答 (/qa/) ACM与蓝桥杯竞赛入门 (/course/acm/) C语言教程 (/course/c/) C++教程 (/course/cpp/) 数据结构教程 (/course/ds/) 单片

机教程 (/course/scm/) Python教程 (/course/python/) JAVA教程 (/course/java/) 编译器教程 (/course/compiler/) C语言函数库 (/course/lib/) 更多教程 (/course/)

设计模式教程 (/course/design- Dotcpp (/) > 编程教程 (/course/) > 行为型模式(Behavioral Patterns) (/course/behavioral-patterns/) > 命令模式

pattern)
命令模式
第一章 设计模式导言 点击打开在线编译器 (/run/),边学边练

(/course/design-pattern-
命令模式是一种行为型设计模式,它的目的是将请求封装成一个对象,从而使得请求的发送者和接收者可以解耦。
introduction) 这样可以方便地将请求排队、记录日志、撤销等操作,以及支持可扩展的命令操作。

1. 设计模式背景 (/course/1349)
命令模式角色构成
2. 设计模式定义 (/course/1350)
在命令模式中,有以下几个关键角色:
3. 设计模式的重要作用
- Command(命令):定义了执行操作的接口,通常包含了一个execute()方法。
(/course/1351) - ConcreteCommand(具体命令):实现了命令接口,并封装了具体的请求操作和接收者。它实现了execute()方

第二章 创建型模式(Creational
法,在方法内部调用接收者的相应操作。
- Receiver(接收者):负责执行具体的请求操作,真正地处理请求。
Patterns) (/course/creational- - Invoker(调用者):负责调用命令对象执行请求。它持有一个命令对象,并在需要的时候调用命令对象的execute()
方法。
patterns) - Client(客户端):创建具体的命令对象,并设置它的接收者。

1. 工厂模式简介 (/course/1355) 弹


2. 工厂模式—简单工厂模式


(/course/1356)

3. 工厂模式—方法工厂模式

(/course/1357)
4. 工厂模式—抽象工厂模式

(/course/1358)

Dotcpp在线编译 C
5. 单例模式 (/course/1359) 运行 重置

16. 建造者模式 (/course/1361)


#include<stdio.h> 输入...
2 int main()
37. {原型模式 (/course/1363)
4 printf("**************************\n");
5 printf("dotcpp.com\n");
6 printf("**************************\n");
7 return 0;
8 }

输出...
下面是一个简单的示例,展示了如何使用命令模式:
// Command(命令)接口
1 public interface Command {
2 void execute();
3 }
4 // ConcreteCommand(具体命令)类
5 public class LightOnCommand implements Command {
Dotcpp在线编译 6 private Light light;
7 public LightOnCommand(Light light) {
1 #include<stdio.h> 8 this.light = light;
9 }
2 int main() 10
3 { public void execute() {
11 light.on();
4 printf("**************************\n");
12 }
5 printf("dotcpp.com\n"); 13 }
6 14
printf("**************************\n"); // Receiver(接收者)类
7 return 0; 15 public class Light {
8 } 16 public void on() {
17 System.out.println("Light is on");
18 }
19 public void off() {
20 System.out.println("Light is off");
21 }
22 }
23 // Invoker(调用者)类
24 public class RemoteControl {
25 private Command command;
26 public void setCommand(Command command) {
27 this.command = command;
28 }
29 public void pressButton() {
30 command.execute();
31 }
32 }
33 // Client(客户端)类
34 public class Client {
35 public static void main(String[] args) {
36 // 创建接收者对象
37 Light light = new Light();
38 // 创建具体命令对象,并设置接收者
39 Command lightOnCommand = new LightOnCommand(light);
40 // 创建调用者对象,并设置命令对象
41 RemoteControl remoteControl = new RemoteControl();
42 remoteControl.setCommand(lightOnCommand);
43 // 调用者发起请求
44 remoteControl.pressButton();
45 }
46 }
47

在这个示例中,Light类是接收者,它负责执行具体的请求操作。LightOnCommand类是具体命令对象,它实现了
Command接口,并封装了Light类的操作。

RemoteControl类是调用者,它持有一个命令对象,并在需要的时候调用命令对象的execute()方法。Client类负
责创建具体的命令对象,并设置其接收者,然后将命令对象传递给调用者。

通过使用命令模式,我们可以将请求的发送者和接收者解耦,从而使得命令的发起者无需知道处理请求的具体细
节。这样可以方便地进行命令操作的记录、排队、撤销等操作,以及支持动态增加新命令。
本文固定URL:https://www.dotcpp.com/course/1375 (/course/1375)
下一课:责任链模式 (/course/1376)

Dotcpp在线编译

1 #include<stdio.h>
2 int main()
3 {
4 printf("**************************\n");
5 printf("dotcpp.com\n");
6 其他教程
printf("**************************\n");
7 return 0;
8 } CSS背景(background) (/course/1132) Xcode使用图文教程 (/course/353)

Python选择结构的嵌套(if...elif...elif...else语句)
(/course/232) C语言位运算符表 (/course/602)

Linux su命令:切换用户 (/course/659) Python引入math模块及库函数大全 (/course/270)

Java不同区域的星期格式 (/course/849) Java声明数组 (/course/882)

串口printf系列函数 (/course/400) 本章总结与作业 (/course/16)

RandomAccessFile流的readLine()方法在读取时出现乱码怎么
办? (/qa/63) 原码与源码的区别 (/qa/45)

为什么计算机只能识别二进制? (/qa/38) C语言培训要不要参加?哪里参加? (/qa/27)

常用的元字符及其在正则表达式中的写法 (/qa/59) C语言中!是什么意思 (/qa/25)

C语言为什么只能在黑窗口下运行 (/qa/5) =和==有什么区别 (/qa/8)

二进制整数如何转换为十进制数? (/qa/34) 机器数与机器码的区别 (/qa/44)

用创新的技术,让教育更公平,使世界更平
坦! 标签分类 (/tag/) 网站介绍 (/oj/intro.php) 交流合作 (/oj/business.php) 联系QQ (/oj/contactus.php)

©2014-2023 C语言网 版权所有 备案:辽ICP备10203779号-3 (http://beian.miit.gov.cn)

You might also like