Professional Documents
Culture Documents
01-命令模式 - 设计模式教程 - C语言网
01-命令模式 - 设计模式教程 - C语言网
机教程 (/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) 运行 重置
输出...
下面是一个简单的示例,展示了如何使用命令模式:
// 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)
RandomAccessFile流的readLine()方法在读取时出现乱码怎么
办? (/qa/63) 原码与源码的区别 (/qa/45)
用创新的技术,让教育更公平,使世界更平
坦! 标签分类 (/tag/) 网站介绍 (/oj/intro.php) 交流合作 (/oj/business.php) 联系QQ (/oj/contactus.php)