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() ;
            
        }
    }
  • 相关阅读:
    pku,杨建武:文本挖掘技术
    IT国家重点实验室
    Python3实现简单的http server
    需要保存数据zabbix,不需要保存数据nagios
    Union
    wox 快速搜索程序
    QTTabBar http://qttabbar.wikidot.com/
    git出错调试
    虚拟机无法上网的问题的解决
    通过命令行升级git for windows
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3803504.html
Copyright © 2011-2022 走看看