设计模式之命令模式
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(); } }
命令模式的适用场景
对于大多数请求-响应模式的功能,比较适合使用命令模式,正如命令模式定义说的那样,命令模式对实现记录日志、撤销操作等功能比较方便。
以上是关于设计模式之命令模式的主要内容,如果未能解决你的问题,请参考以下文章