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

    1. 概念

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

    2. 案例

        

    package org.demo.command.demo01;
    /**
     * 将一个请求封装为一个对象,
     * 从而使你可用不同的请求对客户进行参数化;
     * 对请求排队或记录请求日志,以及支持可撤消的操作
     *  1.Command
        声明执行操作的接口。
        2.ConcreteCommand
        将一个接收者对象绑定于一个动作。
        调用接收者相应的操作,以实现Execute。
        3.Client
        创建一个具体命令对象并设定它的接收者。
        4.Invoker
        要求该命令执行这个请求。
        5.Receiver
        知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
    
     */
    
    
    class Receiver{
        public void receive(){
            System.out.println("知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者");
        }
    }
    
    
    abstract class Command{ 
        protected Receiver receiver ;  //指明命令的接受者
        public Command(Receiver receiver){
            this.receiver = receiver ;
        }
        public abstract void execute() ;  
    }
    
    class CommandImpl extends Command{
        public CommandImpl(Receiver receiver) {
            super(receiver);
        }
    
        public void execute() {  //执行的命令
            receiver.receive() ;
        }
    }
    
    class Invoker{
        private Command command ;
        public void setCommand(Command command){
            this.command = command ;
        }
        public void execute(){
            command.execute() ; //调用命令的执行方法   命令再去调用接受者的方法   因此接受者可以动态创建
        }
    }
    public class Demo01 {
        
         public static void main(String[] args) {
            Command command = new CommandImpl(new Receiver()) ;
            Invoker invoker = new Invoker() ;
            invoker.setCommand(command) ;
            invoker.execute() ;
            
        }
    }
  • 相关阅读:
    Mac 虚拟环境搭建使用
    Django-rest-framework --- 分页,过滤,排序组件
    Celery 分布式任务队列 -- 基础入门
    Redis
    列表
    Git
    django 框架模型之models常用的Field,及常见错误原因及处理方案。
    Django-rest-framework --- 总结
    Django-rest-framework --- drf视图的详解
    Django之POST GET与前后端交互
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3803504.html
Copyright © 2011-2022 走看看