zoukankan      html  css  js  c++  java
  • 《Head First 设计模式》之命令模式——遥控器

    命令模式(Command)

      ——将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

    • 要点
    1. 发出请求的对象执行请求的对象解耦。
    2. 被解耦的两者之间通过命令对象进行沟通。命令对象封装了接收者和一个或一组动作。
    3. 调用者通过调用命令对象的execute()发出请求,使得接收者的动作被调用。
    4. 通过实现一个undo()方法撤销命令。还可以使用一个堆栈记录操作过程的每一个命令,实现多步撤销。
    5. 宏命令允许调用多个命令,也支持撤销。
    6. 命令也可以用来实现日志和事务系统。

     1 interface Command {
     2   public void execute();
     3 }
     4 
     5 class Light {
     6   public void on() {
     7     System.out.println("light on");
     8   }
     9 
    10   public void off() {
    11     System.out.println("light off");
    12   }
    13 }
    14 
    15 class LintOnCommand implements Command {
    16   Light light;
    17 
    18   public LintOnCommand(Light light) {
    19     this.light = light;
    20   }
    21 
    22   @Override
    23   public void execute() {
    24     light.on();
    25   }
    26 
    27 }
    28 
    29 class SimpleRemoteControl {
    30   Command command;
    31 
    32   public SimpleRemoteControl() {}
    33 
    34   public void setCommand(Command command) {
    35     this.command = command;
    36   }
    37 
    38   public void buttonWasPressed() {
    39     command.execute();
    40   }
    41 }
    42 
    43 public class Test {
    44   public static void main(String[] args) {
    45     SimpleRemoteControl control = new SimpleRemoteControl();
    46     Light light = new Light();
    47     LintOnCommand onCommand = new LintOnCommand(light);
    48 
    49     control.setCommand(onCommand);
    50     control.buttonWasPressed();
    51   }
    52 }
  • 相关阅读:
    Cuckoo for Hashing_双哈希表
    nyoj113_字符串替换
    nyoj366_D的小L_字典序_全排列
    二叉树的前序 中序 后序 遍历(递归/非递归)
    Java 学习路线
    leetcode 04 Median of Two Sorted Arrays
    ThreadLocal 的机制与内存泄漏
    try finally 执行顺序问题
    Java中的类加载器
    快速理解Java中的七种单例模式
  • 原文地址:https://www.cnblogs.com/-1307/p/6440191.html
Copyright © 2011-2022 走看看