Java设计模式之命令模式

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类:具体命令类的管理和维护类。该接口中引用的是命令接口,在实现中可以放具体的命令发送者,调用具体的命令方法执行接口中封装了的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值