设计模式之命令模式:给其他模块下达命令

内容

  1. 是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

1.命令模式

  1. 命令模式就是将不同的请求封装成不同的命令对象Command,然后交给Command的触发器Invoker去执行。
  2. 命令模式真正的真谛,就在于说将某个操作封装成一个命令的概念,在后面可以对这些命令做一些复杂的操作。
1.1 类图
1.2 代码
复制代码
public class CommandPattern2 {

    public static void main(String[] args) {
        //1.创建多条命令Command
        CommandA commandA = new CommandA();
        CommandB commandB = new CommandB();

        //2.创建命令触发器
        Invoker invoker = new Invoker();

        //3.命令触发器执行对应的命令
        invoker.setCommand(commandA);
        invoker.execute();

        invoker.setCommand(commandB);
        invoker.execute();
    }

    //=======================命令触发器==================
    public static class Invoker{
        private Command command;
        public void execute(){
            System.out.println("一些别的逻辑A");
            command.execute();
            System.out.println("一些别的逻辑B");
        }

        public Command getCommand() {
            return command;
        }
        public void setCommand(Command command) {
            this.command = command;
        }
    }

    ///====================命令接口封装====================
    public interface Command{
        void execute();
    }

    public static class CommandA implements Command{

        public void execute() {
            System.out.println("命令A的功能逻辑执行");
        }
    }

    public static class CommandB implements Command{
        public void execute() {
            System.out.println("命令B的功能逻辑执行");
        }
    }
}

2.总结

2.1 场景
  1. 一般我们在序偶缓存设计时候,会有两种请求要发送过来执行;一种请求是读请求,一种请求是写请求,不同请求要执行的功能逻辑是不一样的
  2. 此时就非常适合用这个命令模式;将读请求的功能逻辑封装到ReadCommand里面去,将写请求的功能逻辑封装到WriteCommand里面去; 然后设置一个通用的一个命令执行的类invoker
  3. 读请求来了,就封装ReadCommand,交给同一个命令执行类来invoker执行即可;写请求来了,就封装WriteCommand,交给同一个命令感知性类invoker来执行即可
2.1 命令模式优点
  1. 所以为什么要用这种模式呢?;其实很多时候,用模式,是采用模式的合理的思想,去良好的设计你的代码;你运用了模式之后,就可以很好的表达你的代码组件是干嘛的
  2. 常用调用一个工具类的某个方法,太恶心了,从面相对象设计的角度,你没有任何面向对象的设计,你就是一个面向过程,面向方法在执行这个功能;如果你的面向对象的设计太烂的话,几乎没有设计,到了1年以后,你的系统的代码很难看懂,几乎没人能看懂;但是反过来说,按照设计模式体现出的优秀的面向对象设计的思想,来规划你的代码的设计,可能几年以后;别人过来,不同命令,代表了不同的逻辑,代码就很好理解,可读性,维护性,扩展性。
相关推荐
咖啡八杯3 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
大数据新鸟5 小时前
设计模式四大基本原则
设计模式
南一Nanyi11 小时前
依赖注入和控制反转
前端·设计模式·nestjs
tiankong121314 小时前
如何拓展多态下的子类
设计模式·c#
jctech17 小时前
让「小程序」跑起真正的原生代码:ComboNative 多进程原生小程序运行时 · Alpha 首发
android·设计模式·架构
Kel2 天前
Node.js 单线程高并发:从内核中断到 JS 回调的完整技术栈
设计模式·架构·node.js
解局易否结局3 天前
ArkUI MVI 架构实战:单向数据流设计模式在 HarmonyOS NEXT 中的深度实践
华为·设计模式·架构·harmonyos
解局易否结局3 天前
ArkTS 设计模式与架构进阶:构建可维护的 HarmonyOS 应用
华为·设计模式·架构·harmonyos
happyness443 天前
AI编程与设计模式
设计模式·ai编程
就是小王同学啊3 天前
Spring小技巧之设计模式
sql·spring·设计模式