Java设计模式_行为型_命令模式_请求与实现相分离

版权声明:原创作品允许转载,转载时请标明文章原始出处 、作者信息和本声明。 https://blog.csdn.net/ljmingcom304/article/details/50424586

转载请注明出处:http://blog.csdn.net/ljmingcom304/article/details/50424586
本文出自:【梁敬明的博客】

1.行为请求者

  作为单位领导时常需要对下属发布一些命令来完成某些事情。当然,领导的命令有很多种,比如说张三去倒杯水来,李四去把窗户擦干净额,王五去把地拖干净等等,对于不同的命令可能会有不同的人去执行,完成的任务也不尽相同。因此,命令总是动态变化,不同的命令可以实现不同的目标。

//单位领导
public class Invoker {

    private Command command;

    //准备命令
    public void setCommand(Command command) {
        this.command = command;
    }

    //发布命令
    public void action() {
        command.execute();
    }

}

2.命令执行者

  作为单位的员工经常要接受领导的命令来做一些事情。比如说领导今天让擦窗户,那么就去擦窗户,领导让拖地,那么就将地拖干净。真是任劳任怨!

//单位员工
public class Receiver {

    //开始工作
    public void doSomething() {
        System.out.println("擦窗户");
    }

}

3.具体的命令

  命令不一定由哪个领导发出来,但是需要有人来执行,知人善任也是一个合格的领导必须具备的素质,选取合适的人选去执行命令才能保证任务的圆满完成,所以当窗户脏了以后,找一个窗户擦的好的人去擦创库显得至关重要。 

//抽象的命令
public interface Command {
    //执行命令
    void execute();
}

public class ConcreteCommand implements Command {

    private Receiver receiver;

    //选取合适的人选执行命令
    public ConcreteCommand(Receiver receiver) {
        this.receiver = receiver;
    }

    //让选取的人去执行命令
    @Override
    public void execute() {
        System.out.println("准备工作");
        receiver.doSomething();
        System.out.println("收尾工作");
    }

}

4.领导与员工

  现在去找一个领导和一个员工,然后由领导发出擦窗户的命令,再由员工去执行。

public class Client {

    public static void main(String[] args) {
        // 执行命令的领导
        Receiver receiver = new Receiver();
        // 具体的指令
        Command command = new ConcreteCommand(receiver);

        // 发布命令的领导
        Invoker invoker = new Invoker();
        // 设置命令
        invoker.setCommand(command);
        // 发出命令
        invoker.action();
    }

}
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页