zoukankan      html  css  js  c++  java
  • 设计模式之命令模式

    命令模式

    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。

    Command

    package com.hml.command;
    
    public abstract class Command {
    
        protected Receiver receiver;
    
        public Command(Receiver receiver) {
            this.receiver = receiver;
        }
        
        public abstract void excute();
        
    }

    ConcretaeCommand

    package com.hml.command;
    
    public class ConcretaeCommand extends Command {
    
        public ConcretaeCommand(Receiver receiver) {
            super(receiver);
        }
    
        @Override
        public void excute() {
            receiver.action();
        }
    
    }

    Receiver

    package com.hml.command;
    
    /**
     * 该类知道如何去处理命令 ,不同的命令可以有不同的Receiver
     */
    public class Receiver {
    
        public void action() {
            System.out.println("Receiver");
        }
    
    }

    Invoker

    package com.hml.command;
    
    public class Invoker {
        private Command command;
    
        public Command getCommand() {
            return command;
        }
    
        public void setCommand(Command command) {
            this.command = command;
        }
        
        public void excute() {
            command.excute();
        }
    }

    Test

    package com.hml.command;
    
    public class Test {
        public static void main(String[] args) {
            Receiver r = new Receiver();
            Command command = new ConcretaeCommand(r);
            Invoker i = new Invoker();
            i.setCommand(command);
            i.excute();
    
        }
    }

    类图

    命令模式的优点:

    1、比较容易设计命令队列

    2、可以容易的将命令记录日志

    3、接收请求方可决定是否接收请求

    4、可以容易的实现请求撤销和重做

    5、增加新的命令不影响其他的类,因此增加新的命令类很容易

  • 相关阅读:
    vue(21)初识Vuex
    ESCMScript6(3)Promise对象
    vue(20)生命周期函数
    vue(19)嵌套路由
    vue(18)路由懒加载
    vue(17)vue-route路由管理的安装与配置
    vue(16)vue-cli创建项目以及项目结构解析
    vue(15)vue-cli介绍与安装
    webpack(11)配置文件分离为开发配置、生成配置和基础配置
    webpack(10)webpack-dev-server搭建本地服务器
  • 原文地址:https://www.cnblogs.com/heml/p/4652522.html
Copyright © 2011-2022 走看看