元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 设计模式

    • 设计模式简介
    • 设计模式之单例模式
    • 设计模式之工厂模式
    • 设计模式之原型模式
    • 设计模式之建造者模式
    • 设计模式之适配器模式
    • 设计模式之桥接模式
    • 设计模式之组合模式
    • 设计模式之装饰器模式
    • 设计模式之外观模式
    • 设计模式之享元模式
    • 设计模式之代理模式
    • 设计模式之责任链模式
    • 设计模式之命令模式
      • 一、简介
      • 二、实现方式
        • 1、抽象命令类(Command)
        • 2、具体命令类(ConcreteCommand)
        • 3、接收者(Receiver)
        • 4、调用者(Invoker)
      • 三、应用场景
        • 1、Spring-Jdbc模块中的命令模式: JdbcTemplate
      • 四、思维导图
    • 设计模式之解释器模式
    • 设计模式之迭代器模式
    • 设计模式之中介者模式
    • 设计模式之备忘录模式
    • 设计模式之观察者模式
    • 设计模式之状态模式
    • 设计模式之策略模式
    • 设计模式之模版模式
    • 设计模式之访问者模式
    • 设计模式辨析篇
  • 高可用

  • 系统设计
  • 设计模式
元月
2022-08-18
目录

设计模式之命令模式

# 设计模式之命令模式

# 一、简介

**命令模式(Command Pattern)**是一种数据驱动的设计模式。它将请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找到可以处理该命令的对象执行命令。

# 二、实现方式

# 1、抽象命令类(Command)

/**
 * 命令接口
 */
public interface Command {
    void execute();
}
1
2
3
4
5
6

# 2、具体命令类(ConcreteCommand)

持有接收者对象的引用,调用接收者的相关方法来执行具体逻辑

/**
 * 具体命令角色
 */
public class ConcreteCommand1 implements Command {
    private Receiver receiver;
    public ConcreteCommand1(Receiver receiver) {
        this.receiver = receiver;
    }
    @Override
    public void execute() {
        // 调用接收者的相关方法来执行具体逻辑
        receiver.action1();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 3、接收者(Receiver)

/**
 * 接收者
 */
public class Receiver {
    // 执行具体命令逻辑的方法
    public void action1(){
        System.out.println("执行具体操作逻辑1");
    }
}
1
2
3
4
5
6
7
8
9

# 4、调用者(Invoker)

持有命令对象的引用,调用命令对象的相关方法来执行命令

/**
 * 请求者角色
 */
public class Invoker {
    private Command command1;
    public void action1(){
        command1.execute();// 调用具体命令对象的相关方法,执行具体命令
    }
    public Command getCommand1() {
        return command1;
    }
    public void setCommand1(Command command1) {
        this.command1 = command1;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 三、应用场景

# 1、Spring-Jdbc模块中的命令模式: JdbcTemplate

  • ​ StatementCallback 接口 ,相当于抽象命令类(Command)

  • ​ QueryStatementCallback实现了StatementCallback接口,相当于具体命令类(ConcreteCommand)也充当命令接收者

  • ​ JdbcTemplate相当于调用者

    @Override
    @Nullable
    public <T> T execute(StatementCallback<T> action) throws DataAccessException {
      return execute(action, true);
    }
    
    1
    2
    3
    4
    5

# 四、思维导图

#设计模式
设计模式之责任链模式
设计模式之解释器模式

← 设计模式之责任链模式 设计模式之解释器模式→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
gor流量复制工具
06-03
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式