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类:具体命令类的管理和维护类。该接口中引用的是命令接口,在实现中可以放具体的命令发送者,调用具体的命令方法执行接口中封装了的方法。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树