设计模式——命令模式

Posted boycelee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——命令模式相关的知识,希望对你有一定的参考价值。

  • 命令模式定义

    将一个请求封装成一个对象,从而让你使用不同的请求吧客户端参数化,对请求排队或记录请求日志,可以提供命令的撤销和恢复功能。

  • 命令模式角色

    (1)Receive接受者角色
    该角色,就是具体执行的角色,命令传达到这就应该被执行。
    (2)Command命令模式
    用于所有命令声明
    (3)Invoker调用角色
    收到命令,并执行命令。

  • 命令模式

    public abstract class Receiver {

    /**
     * 接受者处理的业务
     */
    public abstract void doSomething();
}
    public class ConcreteReceiver extends Receiver{

    /**
     * 接受者处理的业务
     */
    @Override
    public void doSomething() {
    }
}
    public abstract class Command {

    /**
     * 每个命令执行命令的方法
     */
    public abstract void execute();
}
    public class ConcreteCommand extends Command {

    /**
     * 具体执行的receiver
     */
    private Receiver receiver;

    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    /**
     * 实现命令
     */
    @Override
    public void execute() {
        this.receiver.doSomething();
    }
}
    public class Invoker {

    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void action(){
        this.command.execute();
    }
}
    public class Client {
    public static void main(String[] args) {
        /**
         * 调用者
         */
        Invoker invoker = new Invoker();
        /**
         * 接受者
         */
        Receiver receiver = new ConcreteReceiver();
        /**
         * 定义发送给接受者的命令
         */
        Command command = new ConcreteCommand(receiver);
        /**
         * 命令交给调用者执行
         */
        invoker.setCommand(command);
        invoker.action();
    }
}
  • 命令模式优点

    (1)解耦
    调用者与接收者之间没有依赖关系,调用者实现功能时只需要调用Command执行。
    (2)与其他模式结合使用
    结合责任链实现命令族解析,结合模板减少Command子类膨胀。

  • 命令模式缺点

    Commang子类会膨胀

  • 使用场景

    只要认为是命令的地方就可以采用命令模式

学习内容与收获:
(1)和导师沟通,咨询有这周遇到的问题。wiki:沟通总结
(2)总结参加导师组会中自己也存在的问题
(3)设计模式——命令模式:wiki:命令模式

以上是关于设计模式——命令模式的主要内容,如果未能解决你的问题,请参考以下文章

是否有在单个活动中处理多个片段的 Android 设计模式?

尝试使用片段保存夜间模式状态

Sublime text3最全快捷键清单

Sublime text3最全快捷键清单

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

java 查看寻呼机设计模式与片段。