命令模式
说明:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
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();
}
}