码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之命令模式

时间:2016-06-04 19:20:57      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

命令模式

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

 

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();
    }  
}

 

 

 

 

 

命令模式的适用场景

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

设计模式之命令模式

标签:

原文地址:http://www.cnblogs.com/daiqiaobing/p/5559220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!