您的位置:首页 > 编程语言 > Java开发

Java设计模式之命令模式

2016-06-26 17:49 381 查看

1.提出问题

       什么是命令模式,顾名思义,一定会有命令的发送者和接受者。发送者负责发送命令,接受者负责接受并处理命令。例如,老板通知员工送货,老板就是命令的发送者,员工是命令的接受者。员工接受到命令,还得完成送货这个任务。生活总命令模式很常见。

2.简单命令模式

      命令模式主要是对发出的命令任务进行封装和抽象。首先有个抽象的命令接口,描述任务的特征。具体的实现是由命令对象完成。

      就老板通知员工送货的场景描述,具体的实现代码如下:

package ml_model;

//抽象命令接口

public interface ICommand {

public void sendGood();//送货

}

package ml_model;

//命令的接受者     具体的工作一定是在接受者中完成   

public class Staff {

public void sendGooding(){//"送货"的任务通过该方法完成
System.out.println("正在路上送货。。");

}

}

package ml_model;

//命令的发送者 

//发送者类中  包含 接受者的引用   

public class Boss implements ICommand{

private Staff reciver=null;

public Boss(Staff staff){
this.reciver=staff;

}

@Override

//任务具体的实现由接受者完成

public void sendGood() {
reciver.sendGooding();

}

}

package ml_model;

//命令请求者类  是一个中间类

//命令发送者与请求者作用     请求者类与命令接受者类作用

//主要用来解决        多个发送者和多个接受者   的问题

public class Invoke {
ICommand iCommand;
public Invoke(ICommand iCommand){
this.iCommand=iCommand;
}
//启动命令

    public void execute(){

    iCommand.sendGood();

    }

}

测试类:

package ml_model;

public class Test {
public static void main(String[] args) {
 Staff staff=new Staff();

          Boss boss=new Boss(staff);

//          boss.sendGood();

          

          Invoke invoke=new Invoke(boss);

          invoke.execute();
}

}

3.总结

       命令模式具有的4个角色说明:
       ICommand接口:抽象命令者,封装若干个请求的方法
       Commander类:具体命令发送者。实现抽象命令接口ICommand
       Receiver类:命令接受者。负责发送任务的具体执行者。
       Invoker类:具体命令类的管理和维护类。该接口中引用的是命令接口,在实现中可以放具体的命令发送者,调用具体的命令方法执行接口中封装了的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息