软件设计模式—-命令模式(Java)

命令模式

1、模式动机

在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。

软件设计模式----命令模式(Java)
模式角色

Command: 抽象命令类
ConcreteCommand: 具体命令类
Invoker: 调用者
Receiver: 接收者
Client:客户类

3、模式分析

  • 命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
  • 每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。
  • 命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
  • 命令模式使请求本身成为一个对象,这个对象和其他对象一样可以被存储和传递。
  • 命令模式的关键在于引入了抽象命令接口,且发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。
    (1)典型的抽象命令类代码:
    软件设计模式----命令模式(Java)
    (3)典型的具体命令类代码:
    软件设计模式----命令模式(Java)
    (5)命令模式顺序图
    软件设计模式----命令模式(Java)

软件设计模式----命令模式(Java)
package 命令模式3;//抽象命令类public interface Command {    public void execute();}package 命令模式3;//具体命令类public class ExitCommand implements Command {    private SystemExitClass seObj;    public ExitCommand(){seObj = new SystemExitClass();    }    @Override    public void execute() {seObj.exit();    }}package 命令模式3;//调用者类public class SystemExitClass {    public void exit() {System.out.println("关闭功能键");    }}package 命令模式3;//具体命令类public class HelpCommand implements Command {    private DisplayClass hcObj;    public HelpCommand(){hcObj = new DisplayClass();    }    @Override    public void execute() {hcObj.display();    }}package 命令模式3;//调用者类public class DisplayClass {    public void display(){System.out.println("功能键展示");    }}package 命令模式3;//调用者类public class FuncationButton {    private Command command;    public void setCommand(Command command){this.command =command;    }    public void click(){command.execute();    }}package 命令模式3;public class client {    public static void main(String[] args) { Command exit,来源:没在尽心,怎么可能
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月22日
下一篇 2020年3月22日

相关推荐