java设计模式14(命令模式)

命令模式可以将请求发送者和请求接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。

命令模式的定义:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。

命令模式的结构与实现:
1.Command(抽象命令类):抽象命令类一般是一个抽象类或接口,在其中声明了用于执行请求的方法,通过这些方法可以调用请求接收者的相关操作。

public abstract class Command {

    public abstract void execute();

}

2.ConcreteCommand(具体命令类):具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,它对应具体的接收者对象,将接收者对象的动作绑定其中。

public class ConcreteCommand extends Command {
    
    private Receiver receiver;
    
    public  ConcreteCommand() {
        receiver=new Receiver();
    }

    @Override
    public void execute() {
        receiver.action();
    }

}

3.Invoker(调用者):调用者即请求发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接收者,因此它只与抽象命令类之间存在关联关系。

public class Invoker {

    private Command command;
    
    public Invoker(Command command) {
        this.command=command;
    }
    
    public void setCommand(Command command) {
        this.command = command;
    }
    
    public void request() {
        //调用命令类中的方法
        command.execute();
    }
}

4.Receiver(接收者):接收者执行与请求相关的操作,具体实现对请求的业务处理。

public class Receiver {
    
    public void action() {
        System.out.println("接收者调用具体业务!");
    }

}

5.Test:

public class Test {

    public static void main(String[] args) {
        ConcreteCommand command=new ConcreteCommand();
        Invoker invoker=new Invoker(command);
        //接收者调用具体业务!
        invoker.request();
    }
    
}

你可能感兴趣的:(java设计模式14(命令模式))