zoukankan      html  css  js  c++  java
  • 设计模式(行为模式) 之 命令模式

    命令模式:行为的请求者  与 行为的实现者 通常呈现一种 紧耦合 的状态;而 命令模式  就是将 一组行为抽象为对象,实现二者的松耦合。

    事例:“领导” 命令“我 完成这个任务”;

    1,ICommander   抽象的命令者,接口,规定了用来封装请求的若干方法;

    2,ConcreteCommander  具体命令的发送者,也就是命令源;(上述事例中的领导)

    3,Invoker  请求者,具体命令的统一调度管理与维护类:请求者  是包含命令接口 的事例对象;请求者中 命令接口 的变量可以是任何具体命令的引用;请求者 负责调用具体的命令。

    4,Receiver  命令的接受者,是具体对象;(上述事例中的我 行为“完成这个任务”)

    代码实现:

    /**
    * 抽象的命令者
    */
    public interface ICommand {
    /**
    * 委派
    */
    public void assign();
    }
    /**
    * 命令接受者,me
    */
    public class ReceiverWorker {
    /**
    * 处理任务
    */
    public void dealTask() {
    System.out.println("处理任务");
    }
    }
    /**
    * 具体命令发送者:领导
    */
    public class BossCommander implements ICommand {
    /**
    * 工作者
    */
    private ReceiverWorker receiverWorker;

    public BossCommander(ReceiverWorker receiverWorker) {
    this.receiverWorker = receiverWorker;
    }

    @Override
    public void assign() {
    /**
    * 处理任务
    */
    receiverWorker.dealTask();
    }
    }
    /**
    * 请求者
    */
    public class Invoker {
    private ICommand command;

    public Invoker(ICommand command) {
    this.command = command;
    }

    /**
    * 执行
    */
    public void execute() {
    command.assign();
    }
    }

    测试: 运行结果:处理任务

    **

  • 相关阅读:
    C#与C++中struct和class的小结
    C#中string的小结
    树的一些操作——遍历,前序和中序建立后续
    一个快速、高效的Levenshtein算法实现——代码实现
    整数拆分
    阶乘结果中0的个数
    普莱菲尔密码矩阵生成算法
    CTF密码学总结
    盲文对照表
    实验吧-古典密码
  • 原文地址:https://www.cnblogs.com/fish-in-sky/p/6507502.html
Copyright © 2011-2022 走看看