zoukankan      html  css  js  c++  java
  • 设计模式开始--命令模式

    命令模式

    一、作用

    将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。

    Command模式可应用于

    • 整个调用过程比较繁杂,或者存在多处这种调用。这时,使用Command类对该调用加以封装,便于功能的再利用。
    • 调用前后需要对调用参数进行某些处理。
    • 调用前后需要进行某些额外处理,比如日志,缓存,记录历史操作等。

    二、类图

    三、实现

     (1)命令的真正实施者

    public class Receiver {
        public void action()
        {
            System.out.println("do some work");
        }
    }
    View Code

    (2)有哪些命令,指定调用实施者

    public abstract class Command {
        protected Receiver receiver;
        public Command(Receiver receiver)
        {
            this.receiver = receiver;
        }
        public abstract void execute();
    }
    public class ConcrectCommand extends Command {
        public ConcrectCommand(Receiver receiver) {
            super(receiver);
        }
        @Override
        public void execute() {
            receiver.action();
        }
    }
    View Code

    (3)调用命令的调用者,传入命令即可

    public class Invoker {
        private Command command;
        public Invoker(Command command)
        {
            this.command = command;
        }
        public void execute()
        {
            command.execute();
        }
    }
    View Code

    (4)Client 客户端 测试类

    public class Client {
        public static void main(String[] args) {
            Receiver receiver = new Receiver();
            Command command = new ConcrectCommand(receiver);
            Invoker invoker = new Invoker(command);
            invoker.execute();
        }
    }
    View Code
  • 相关阅读:
    【转】Java8学习笔记(1) -- 从函数式接口说起
    解决sublime text 2总是在新窗口中打开文件(标签中打开)
    Cocoapod安装使用
    使用工具来提升Android开发效率
    Material Design之FloatingActionButton的使用
    HDU2842-Chinese Rings(递推+矩阵高速幂)
    阿里笔试题(2015)持续更新中
    Newton‘ method 的优缺点
    解决的方法:warning: Clock skew detected. Your build may be incomplete.
    云享 值得一用的在线文档即时通讯平台 新用户持续免费
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4387486.html
Copyright © 2011-2022 走看看