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

来源:互联网 发布:网络新媒体加盟 编辑:程序博客网 时间:2024/06/06 01:10

转载请注明出处: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();    }}
0 0
原创粉丝点击