行为型模式之命令模式(Command)
来源:互联网 发布:搜索引擎优化广告 编辑:程序博客网 时间:2024/05/21 15:07
一、模式介绍
命令模式的作用在于将请求的调用者与请求的处理者松耦合,进而使得调用者不必再关心请求的执行细节(如被谁执行的,怎么执行的等等),调用者和处理者可以自由变化。
实现方案:声明一个命令调用接口,客户端使用该接口中声明的命令统一执行方式执行命令,在具体命令的实现中查找并使用真实处理者中的具体方法。
另外,通过命令执行者的介入,可以方便地实现,历史命令记录、取消命令执行(undo)、重新执行命令(redo)、批量执行等等。
二、原理图
三、示例代码
import java.util.ArrayList;import java.util.List;interface ComputerCommand { void execute(); // undo execute}// Receiverclass Computer { void startup() { System.out.println("开机 ..."); } void shutdown() { System.out.println("关机 ..."); } void restart() { System.out.println("重启 ..."); }}class StartupCommand implements ComputerCommand { Computer computer; public StartupCommand(Computer computer) { this.computer = computer; } @Override public void execute() { computer.startup(); }}class ShutdownCommand implements ComputerCommand { Computer computer; public ShutdownCommand(Computer computer) { this.computer = computer; } @Override public void execute() { computer.shutdown(); }}class RestartCommand implements ComputerCommand { Computer computer; public RestartCommand(Computer computer) { this.computer = computer; } @Override public void execute() { computer.restart(); }}// Invoker:可实现 undo redo 等等class CommandInvoker { List historyCommands = new ArrayList(); void storeAndExecute(ComputerCommand command) { historyCommands.add(command);// 记录,可实现 undo redo 等等 command.execute(); }}public class Test { public static void main(String[] args) { Computer computer = new Computer(); CommandInvoker invoker = new CommandInvoker(); invoker.storeAndExecute(new StartupCommand(computer)); invoker.storeAndExecute(new RestartCommand(computer)); invoker.storeAndExecute(new ShutdownCommand(computer)); }}
输出结果:
开机 ...重启 ...关机 ...
- 行为模式之命令模式(command)
- 设计模式之命令(Command)---对象行为型模式
- 行为型模式之命令模式(Command)
- 行为型模式之命令模式(Command)
- 行为型模式之命令模式(command)
- 行为型模式-----命令模式(Command)
- 行为型模式之命令COMMAND
- 【设计模式】行为模式之Command命令
- 十四、命令模式Command(行为型)
- 命令模式Command(对象行为型)
- 行为型-命令模式(Command)
- Command命令(行为型模式)
- 行为型模式-命令command
- 行为型模式-命令(command)
- 行为模式:Command(命令)
- 设计模式(行为型)之命令模式(Command Pattern)
- 11种行为型模式之:命令模式(Command)
- command命令模式(行为模式)之我见
- Java_ClassLoader_知识
- 完全用Linux工作
- hdu1533 最小费用流
- 奇偶校验位
- hrbust 1577 Prince and little Princess-1
- 行为型模式之命令模式(Command)
- 测试工具 NUnit
- The connection to adb is down, and a severe error has occured.
- VS中Resharper的Todo item自定义
- Android OTA升级过程
- Qt应用程序之Application Main Window详解
- android应用之测试利器--StrictMode(未完成,待续)
- Linux应用编程之Socket编程
- 数据库记录中重复的某些字段的数据筛选