zoukankan      html  css  js  c++  java
  • 设计模式之Command

      应该用设计模式的眼观来看设计模式,不然一定会让你失望的。在开发中会遇到一方去调用另一方,甲具有决定权,知道什么时候该行动。而乙虽然不知道什么时候行动,但是他很清楚怎么做。

      好了,现在看起来这个代码写起来非常清楚,甲去调用乙中的方法就可以了。但是不能用静态的眼观来看程序,尤其是这种调用关系中。如果哪一天甲抛弃了乙该投丙了(当然丙也是知道该怎么做但是不知道该什么时候做),这下麻烦来了。需要把甲中与乙有关的部分用丙的替换掉,当然这是简单调用的情况,那如果甲和乙之间的关系千丝万缕的时候怎么办呢?重写甲吧。

      但是,如果你的程序使用了命令模式就大不一样了。甲只需要傻傻地调用execte就可以了(当然甲可能是经过严密的推理之后发现时机到了),而乙和丙则负责execte完美的运行就好啦。就像是乙告诉甲,你想运行的时候就调用execte就可以啦,运行细节你不用管。

      代码修改时候的复杂性来源于各个不同角色之间的各种纠缠在一起的关系,而用命令模式就可以成功把调用者和执行者解耦。下面是段示例(丑了点):

    interface Command{
    void execute();
    }
    class myCommand implements Command{
    public void execute() {
    System.out.println("myCommand has done sth.");
    }
    }
    class invoker{
    Command command;
    public void setCommand(Command command){
    this.command = command;
    }
    public void iShouldDoSth(){
    command.execute();
    }
    }

    public class Test {
    public static void main(String[] arg){
    invoker a = new invoker();
    a.setCommand(new myCommand());
    a.iShouldDoSth();
    }
    }

    ----------------------------------

    欢迎拍砖。

  • 相关阅读:
    数组里面为对象根据某一属性排序
    理由<a>标签跳转到对应锚点
    jquery对复选框选中
    Fullcalendar
    es6学习
    vue 关于树杈图问题
    input 复选框样式修改
    GAMES101 作业2
    一份自己iOS 面试题,拿到15K35K,分享出来
    Cesium 一款面向三维地球和地图的,世界级的JavaScript开源产品
  • 原文地址:https://www.cnblogs.com/ggzwtj/p/2233082.html
Copyright © 2011-2022 走看看