15、命令行模式(设计模式笔记)

2016-10-21  本文已影响225人  yjaal

一、介绍

二、结构

三、实例

Receiver,java

package cn.itcast.day246.command;
//接收者
public class Receiver {
    public void action(){
        System.out.println("接收者执行命令");
    }
}

Command.java

package cn.itcast.day246.command;
//命令处理的中转接口
public interface Command {
    public void execute();// 这里是返回一个空,但是实际开发中我们可以添加多个不同的方法
}

// 实际中转类
class ConcreteCommand implements Command {

    private Receiver receiver;// 命令的真正执行者,当然这里也可以使用一个容器来保存多个命令的接收者

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

    @Override
    public void execute() {
        // 调用前的相关处理
        //...
        
        receiver.action();
        
        // 调用前的相关处理
        //...
    }
}

Invoker.java

package cn.itcast.day246.command;
//命令的发起者
public class Invoker {
    private Command command;// 当然这里我们也可以使用一个容器来保存多条命令

    public Invoker(Command command) {
        this.command = command;
    }
    
    //业务方法,用于调用命令类的方法
    public void call() {
        // 调用前的相关处理
        // ...

        command.execute();

        // 调用后的相关处理
        // ...
    }
}

说明:从上面可以看到,实际上命令处理类实际上就相当于一个中转站,它从一个或者多个命令发出者(Invoker )接收到一条或多条命令,然后分别发送到一个或多个接收者(Receiver),当然在接收到命令之后可以进行相关的处理(这里可以进行批处理),然后发送给接收者进行处理。

上一篇下一篇

猜你喜欢

热点阅读