设计模式-行为型-命令模式(Command)
来源:互联网 发布:物理tracker软件 编辑:程序博客网 时间:2024/05/18 13:26
定义
将一个请求封闭成一个对象,从而让你使用不同的请求把客户端参数化,对请求排除或者记录请求日志,可以提供命令的撤销和恢复功能
角色
抽象命令类(Command):声明需要执行的命令,一般要对外公布一个方法来执行命令
命令类:对抽象命令类中的方法进行实现
调用者(Invoker):负责调用命令
接收者(Receiver):负责接收并执行命令
客户端(Client):最终调用类
优点
- 良好的封闭性(每个命令封装在一个命令类中)、扩展性
- 降低对象之间的耦合度
- 新的命令可以很容易地加入到系统中
- 可以比较容易地设计一个组合命令
- 调用同一方法实现不同的功能
缺点
- 针对每一个命令都需要设计一个具体命令类,因此可能会导致系统存在大量的命令类
- 命令过于简单时,本来几行代码可以搞定,这里就需要封装一个命令类
适用场景
- 适用于大多数请求-响应模式的功能
- 系统需要将请求调用者和请求接收者解耦时,可用命令模式使调用者和接收者不直接交互
类图
package com.vapy.behavior.Command;/** * * @author vapy * */public abstract class Command { public abstract void execute();}
package com.vapy.behavior.Command;/** * * @author vapy * */public class ConcreteCommand extends Command { private Receiver receiver; public ConcreteCommand(Receiver receiver) { this.receiver = receiver; } public void execute() { this.receiver.executeCommand(); }}
package com.vapy.behavior.Command;/** * * @author vapy * */public class Invoker { private Command command; public void setCommand(Command command) { this.command = command; } public void action() { this.command.execute(); }}
package com.vapy.behavior.Command;/** * * @author vapy * */public class Receiver { public void executeCommand() { System.out.println("执行命令"); }}
package com.vapy.behavior.Command;/** * * @author vapy * */public class Client { public static void main(String[] args) { Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); invoker.setCommand(command); invoker.action(); }}
本文代码可在github查看:点击此处
6 0
- [设计模式-行为型]命令模式(Command)
- 设计模式(4)-行为型-命令模式(Command)
- 设计模式之命令(Command)---对象行为型模式
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
- 重学设计模式 - Command(命令)模式 - 行为型
- 设计模式--命令模式Command(行为型)
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
- 设计模式-行为型-命令模式(Command)
- 行为型模式-----命令模式(Command)
- 设计模式深入学习--Command 命令模式(行为型模式)
- 行为设计模式---命令模式(Command)
- 【设计模式】行为模式之Command命令
- 设计模式(14)-行为型-命令模式(Command)
- 设计模式(行为型)之命令模式(Command Pattern)
- JAVA设计模式(18) —<行为型>命令模式(Command)
- 设计模式(14)--Command(命令模式)--行为型
- 学习记录5:主席树
- POJ3126-Prime Path
- C#控制台基础 使用arraylist的命名空间
- 直方图均衡化实现
- leetcode No91. Decode Ways
- 设计模式-行为型-命令模式(Command)
- ImageMagicK编译--合成图片为gif
- 直播http-flv小调研
- 数据的逻辑结构
- ImageMagick编译
- 1102. Invert a Binary Tree (25)-PAT甲级真题
- 用js或者jQuery判断数组中含某个元素
- POJ 1365 Prime Land(质因数分解)
- hadoop 三个节点集群的安装部署