定义:

  • 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

    特点:

  • 降低系统的耦合度。(优点)

  • 增加或删除命令非常方便。(优点)
  • 可以实现宏命令。(优点)
  • 可能产生大量具体命令类。这将增加系统的复杂性。(缺点)

    通常适用场景:

  • 当系统需要将请求调用者与请求接收者解耦时,命令模式使得调用者和接收者不直接交互。

  • 当系统需要随机请求命令或经常增加或删除命令时,命令模式比较方便实现这些功能。
  • 当系统需要执行一组操作时,命令模式可以定义宏命令来实现该功能。

    demo代码:

  • 命令类 ```java public interface Command{ void execute(); }

public class ConcreteCommand implements Command{ private Executor executor; public ConcreteCommand(){ executor=new Executor(); } @Override public void execute(){ executor.action(); } }

  1. - 发送者和执行者
  2. ```java
  3. //发命令
  4. public class Sender{
  5. private Command command;
  6. public Sender(Command command){
  7. this.command=command;
  8. }
  9. public void command(){
  10. System.out.println("执行command");
  11. command.execute();
  12. }
  13. }
  14. //执命令具体类
  15. public class Executor{
  16. public void action(){
  17. System.out.println("action()被调用");
  18. }
  19. }
  • 测试
    public static void main(String[] args) {
      Command command=new ConcreteCommand();
      Sender sender =new Sender(command);
      sender.command();
    }