zoukankan      html  css  js  c++  java
  • 命令模式

    命令模式把一个请求或者操作封装到一个对象中,把发出命令的责任和执行命令的责任分割开,委派给不同的对象。

     

    命令模式结构:


     

    客户角色:创建一个具体命令对象并确定其接收者

    命令角色:声明了一个给所有具体命令类的抽象接口

    具体命令角色:定义一个接收者和行为之间的弱耦合,实现execute()方法,负责调用接收者的相应操作

    请求者角色:负责调用命令对象执行请求

    接收者角色:负责具体实施和执行一个请求

     

     1public class Client{
     2    public static void main(String[] args){
     3        Receiver receiver = new Receiver();
     4        Command commandOne = new ConcreteCommandOne(receiver);
     5        Command commandTwo = new ConcreteCommandTwo(receiver);
     6        Invoker invoker = new Invoker(commandOne,commandTwo);
     7        invoker.actionOne();
     8        invoker.actionTwo();
     9    }
    10}
    11public class Invoker{
    12    private Command commandOne;
    13    private Command commandTwo;
    14    public Invoker(Command commandOne,Command commandTwo){
    15        this.commandOne = commandOne;
    16        this.commandTwo = commandTwo;
    17    }
    18    public void actionOne(){
    19        commandOne.execute();
    20    }
    21    public void actionTwo(){
    22        commandTwo.execute();
    23    }
    24}
    25public interface Command{
    26    void execute();
    27}
    28public class ConcreteCommandOne implements Command{
    29    private Receiver receiver
    30    public ConcreteCommandOne(Receiver receiver){
    31        this.receiver = receiver;
    32    }
    33    public void execute(){
    34        receiver.actionOne();
    35    }
    36}
    37public class ConcreteCommandTwo implements Command{
    38    private Receiver receiver
    39    public ConcreteCommandTwo(Receiver receiver){
    40        this.receiver = receiver;
    41    }
    42    public void execute(){
    43        receiver.actionTwo();
    44    }
    45}
    46public class Receiver{
    47    public Receiver(){
    48        //
    49    }
    50    public void actionOne(){
    51        System.out.println("ActionOne has been taken.");
    52    }
    53    public void actionTwo(){
    54        System.out.println("ActionTwo has been taken.");
    55    }
    56}

     

  • 相关阅读:
    【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试
    【Golang 接口自动化07】struct转map的三种方式
    【Golang 接口自动化06】微信支付md5签名计算及其优化
    【Golang 接口自动化05】使用yml管理自动化用例
    【Golang 接口自动化04】 解析接口返回JSON串
    【Mac】小技巧:实现ssh服务器别名免密登录
    【Golang】幽灵变量(变量覆盖)问题的一劳永逸解决方法
    【Golang】字符串首字母大小写转化
    【Python】给图片添加水印的Python及Golang实现
    sequelize处理日期格式化
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1935894.html
Copyright © 2011-2022 走看看