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();
    }
    }

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

    **

  • 相关阅读:
    重定向是否可以重定向到post接口
    ForkJoin(工作窃取)初步使用,计算偶数集合
    Dubbo服务的三种发布模式
    mysql开启慢查询日志
    Hashmap的结构,1.7和1.8有哪些区别
    idea回滚已经push的代码
    rabbitmq集群安装配置
    restful好处,表单提交put/delete
    BIO/NIO/AIO待完成
    判断一个对象是否可以被回收
  • 原文地址:https://www.cnblogs.com/fish-in-sky/p/6507502.html
Copyright © 2011-2022 走看看