GoF23种设计模式之行为型模式之命令模式
来源:互联网 发布:java物联网框架 编辑:程序博客网 时间:2024/05/17 08:00
一、概述
将一个请求封装为一个对象,从而可以使用不同的请求对客户端进行参数化。对请求排队或记录请求日志,以及支持撤销的操作。
二、适用性
1.当抽象出待执行的动作以参数化某个对象的时候。
2.当需要在不同的时刻指定、排列和执行请求的时候。
3.当需要支持撤销操作的时候。
4.当需要支持修改日志的时候。系统崩溃时,这些修改可以重做一遍。
5.当用构建在原语操作上的高层操作构造一个系统的时候。
三、参与者
1.Command:声明执行操作的接口。
2.ConcreteCommand:将一个接收者对象绑定于一个动作。调用接收者相应操作来完成要执行的操作。
3.Client:创建一个具体命令对象并且设定它的接收者。
4.Invoker:要求该命令执行这个请求。
5.Receiver:知道如何实施和执行一个请求相关的操作。任何类都可能作为一个接收者。
四、类图
五、示例
Command
package cn.lynn.command;public interface ICommand { public void execute();}ConcreteCommand
package cn.lynn.command;public class CommandImpl implements ICommand { private IMainBoard mainBoard; public CommandImpl(IMainBoard mainBoard) { this.mainBoard = mainBoard; } @Override public void execute() { mainBoard.open(); }}Invoker
package cn.lynn.command;public class Box { private ICommand command; public void setCommand(ICommand command) { this.command = command; } public void openButtonPressed() { command.execute(); }}Receiver
package cn.lynn.command;public interface IMainBoard { public void open();}
package cn.lynn.command;public class AsusMainBoardImpl implements IMainBoard { @Override public void open() { System.out.println("华硕主板现在正在开机,请等候"); System.out.println("接通电源......"); System.out.println("设备检查......"); System.out.println("装载系统......"); System.out.println("机器正常运转起来......"); System.out.println("机器已经正常打开,请操作"); }}
package cn.lynn.command;public class MsiMainBoardImpl implements IMainBoard { @Override public void open() { System.out.println("微星主板现在正在开机,请等候"); System.out.println("接通电源......"); System.out.println("设备检查......"); System.out.println("装载系统......"); System.out.println("机器正常运转起来......"); System.out.println("机器已经正常打开,请操作"); }}
Client
package cn.lynn.command;public class Client { public static void main(String[] args) { IMainBoard mainBoard = new AsusMainBoardImpl(); ICommand command = new CommandImpl(mainBoard); Box box = new Box(); box.setCommand(command); box.openButtonPressed(); }}Result
华硕主板现在正在开机,请等候接通电源......设备检查......装载系统......机器正常运转起来......机器已经正常打开,请操作
- GoF23种设计模式之行为型模式之命令模式
- GoF23种设计模式之行为型模式之迭代器模式
- GoF23种设计模式之行为型模式之中介者模式
- GoF23种设计模式之行为型模式之备忘录模式
- GoF23种设计模式之行为型模式之观察者模式
- GoF23种设计模式之行为型模式之状态模式
- GoF23种设计模式之行为型模式之责任链模式
- GoF23种设计模式之行为型模式之解释器模式
- GoF23种设计模式之行为型模式之访问者模式
- GoF23种设计模式之行为型模式之策略模式
- 【转】GoF23种设计模式之行为型模式之策略模式
- GOF23设计模式之 命令模式command
- GoF23种设计模式之行为型模式之模板方法
- GoF23种设计模式之行为型模式之模板方法
- 设计模式-行为型之命令模式
- Java设计模式之行为型模式(命令模式)
- 设计模式(四):行为型模式之命令模式
- GOF23种设计模式之Builder Pattern
- Hibernate中常见的20个问题(11-20)
- 关系数据库还是NoSQL数据库
- [内存管理]智能指针之shared_array
- 算法导论-14.3-6-MIN-GAP
- 负数的左移和右移
- GoF23种设计模式之行为型模式之命令模式
- 好习惯成就好程序员
- ssh putty 端口转发实例
- String s = new String( "xyz "); 创建了几个对象?
- 黑马程序员-java高新技术-代理和类加载器
- ODB Documentation
- VS2012 RC 编译Qt 4.8.2完整过程
- Linux系统共享库编程
- 分页存储过程