命令模式-实例使用

未使用命令模式的UML

使用命令模式后的UML

public abstract class Command {
    public abstract void execute();
}
public class Invoker {
    private Command command;

    /**
     * 为功能键注入命令
     * @param command
     */
    public void setCommand(Command command) {
        this.command = command;
    }

    /**
     * 点击按钮事件
     */
    public void click() {
        System.out.print("点击按钮事件:");
        command.execute();
    }
}
public class BarCommand extends Command{

    final private BarCodeActivity barCodeActivity;
    final private Context context;
    final private String str;

    public BarCommand(Context context, String str){
        barCodeActivity = new BarCodeActivity();
         this.str = str;
         this.context = context;
    }
    @Override
    public void execute() {
        barCodeActivity.printBarCode(context,str);
    }
}
public class LabelCommand extends Command{

    final private LabelActivity labelActivity;
    final private Context context;
    final private String str;

    public LabelCommand(Context context, String str){
         labelActivity = new LabelActivity();
         this.str = str;
         this.context = context;
    }
    @Override
    public void execute() {
        labelActivity.printLabel(context,str);
    }
}
public class QrCommand extends Command{

    final private QrActivity qrActivity;
    final private Context context;
    final private String str;

    public QrCommand(Context context, String str){
         qrActivity = new QrActivity();
         this.str = str;
         this.context = context;
    }
    @Override
    public void execute() {
        qrActivity.printQrCode(context,str);
    }
}
public void onQrcode(View view){
        Logs.d(TAG,"");
        Command command = CommandFactory.createQrCommand(getApplicationContext(), mEditText.getText().toString());
        executeCommand(command);
    }
    public void onBarcode(View view){
        Command command = CommandFactory.createBarCommand(getApplicationContext(), mEditText.getText().toString());
        executeCommand(command);
    }
    public void onLabel(View view){
        Command command = CommandFactory.createLabelCommand(getApplicationContext(), mEditText.getText().toString());
        executeCommand(command);
    }
public class CommandFactory {

    public static Command createQrCommand(Context context, String data) {
        return new QrCommand(context, data);
    }

    public static Command createBarCommand(Context context, String data) {
        return new BarCommand(context, data);
    }

    public static Command createLabelCommand(Context context, String data) {
        return new LabelCommand(context, data);
    }
}

相关推荐

  1. 命令模式-C++实现

    2023-12-31 08:44:04       47 阅读
  2. Jupyter快捷键的使用 --(编辑模式命令模式

    2023-12-31 08:44:04       53 阅读
  3. CL11命令行解析使用实例

    2023-12-31 08:44:04       23 阅读
  4. ·命令模式

    2023-12-31 08:44:04       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 08:44:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 08:44:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 08:44:04       82 阅读
  4. Python语言-面向对象

    2023-12-31 08:44:04       91 阅读

热门阅读

  1. [原创][R语言]股票分析实战[5]:加载股票数据

    2023-12-31 08:44:04       61 阅读
  2. CentOS 8 上安装 Python 3.10.12

    2023-12-31 08:44:04       58 阅读
  3. Docker启动各种服务

    2023-12-31 08:44:04       56 阅读
  4. 【12.30】转行小白历险记-刷算法06

    2023-12-31 08:44:04       61 阅读
  5. 腾讯云系统盘50G通用型SSD云硬盘不够用怎么办?

    2023-12-31 08:44:04       64 阅读
  6. 全面指南:掌握GitHub Actions(官网导航链接)

    2023-12-31 08:44:04       61 阅读