设计模式之命令模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之命令模式相关的知识,希望对你有一定的参考价值。

命令模式

说明:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

 

UML图如下所示:

 技术分享

代码如下所示:

package com.dai.command;
 
/**
 *
 * @author 戴礼明
 *日期: 2016-6-4
 *content: 命令操作接口
 */

public interface CommandOperat {
   
    public void operation(Computer computer);
  }

package com.dai.command;
 
/**
 *
 * @author 戴礼明
 *日期: 2016-6-4
 *content:打印命令
 */

public class CommandPrint  implements CommandOperat{

 
    public void operation(Computer computer) {
        computer.print();
    }
       }

package com.dai.command;

 /**
 *
 * @author 戴礼明
 *日期: 2016-6-4
 *content:关闭电脑命令
 */ 

public class CommandTurnOff  implements CommandOperat{

    public void operation(Computer computer) {
        computer.turnOn();
    }
    }

package com.dai.command;

/**
 *
 * @author 戴礼明
 *日期: 2016-6-4
 *content:开启电脑命令
 */


public class CommandTurnOn  implements CommandOperat{

     public void operation(Computer computer) {
        computer.turnOn();
    } 
}

package com.dai.command;


public class Computer {

     public void turnOn(){
       System.out.println("我正在打开中.....");
    }

       public void turnOff(){
       System.out.println("我正在关闭中.....");
    }

     public void print(){
       System.out.println("我正在打印中......");
    }
}

package com.dai.command;

 /**
 *
 * @author 戴礼明
 *日期: 2016-6-4
 *content:控制器
 */

public class Controller {

     private CommandOperat turnOn,turnOff,print;
    private Computer computer;
       public Controller() {

         }   

    public Controller(CommandOperat turnOn, CommandOperat turnOff,

           CommandOperat print) {
       super();
       this.turnOn = turnOn;
       this.turnOff = turnOff;
       this.print = print;
       this.computer=new Computer();
    }

    public void turnOn(){
       turnOn.operation(computer);
    }
  
    public void turnOff(){
       turnOff.operation(computer);
    }
    public void print(){
       print.operation(computer);
    }
}

package com.dai.command;

/**
* @author 戴礼明
  *日期: 2016-6-4
 *content:用户测试类
 */

public class People {


    public static void main(String[] args) {

     CommandOperat turnOn=new CommandTurnOn();          CommandOperat turnOff=new CommandTurnOff();
     CommandOperat print=new CommandPrint();

     Controller controller=new Controller(turnOn, turnOff, print);
     controller.turnOn();
     controller.turnOff();
     controller.print();
    }  
}

 

 

 

 

 

命令模式的适用场景

       对于大多数请求-响应模式的功能,比较适合使用命令模式,正如命令模式定义说的那样,命令模式对实现记录日志、撤销操作等功能比较方便。

以上是关于设计模式之命令模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式命令模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式之迭代器模式与命令模式详解和应用

手撸golang 行为型设计模式 命令模式

设计模式之命令模式

设计模式----命令模式

设计模式之命令模式 Command