Java设计模式之责任链模式
来源:互联网 发布:淘宝api 编辑:程序博客网 时间:2024/06/08 16:55
上面是的大致的模型图。
message从第一个链开始判断和处理,如果不能处理就传给下一个链,每一个链用handler表示。所有的链继承自同一个父类,Handler,代码如下:
//责任链的基类public abstract class Handler { protected Handler nextHandler; void handle(BaseMessage msg) { if(msg.getMessageLevel()==this.getHandlerLevel()) { //如果和当前等级相等就当前处理 handleMessage(msg); System.out.println("test=处理的chain:handler"+getHandlerLevel()+"||消息内容:"+msg.getContent().toString()); }else { //如果和当前chain等级不等,丢给 下一chain处理 if(nextHandler!=null) { //有点递归的意思,一个一个的传下去 System.out.println("test=当前handler"+getHandlerLevel()+"处理不力,丢给下一个"); nextHandler.handle(msg); }else { //所有的chain都处理不了 System.out.println("没有被处理,因为chain等级不匹配"); } } }; //定义抽象方法处理每一个msg,让子类具体实现 abstract void handleMessage(BaseMessage msg); //返回当前链等级 abstract int getHandlerLevel();}
//第一个chain和后面所有的chain代码一样的;public class Handler1 extends Handler { @Override void handleMessage(BaseMessage msg) { // TODO Auto-generated method stub } @Override int getHandlerLevel() { // TODO Auto-generated method stub return 1; }}
消息的基类和子类如下:
public abstract class BaseMessage { private Object content; protected int level; public int getMessageLevel() { return level; } //设置当前消息等级 public void setLevel(int level) { this.level = level; } public Object getContent() { return content; } //通过构造函数传入内容,灵活处理 protected BaseMessage(Object content) { this.content=content; }}//下面是消息的子类public class ThreadMessage extends BaseMessage { protected ThreadMessage(Object content) { super(content); // TODO Auto-generated constructor stub }}//最后是client的调用public static void main(String[] args) { //模拟消息 BaseMessage thMsg=new ThreadMessage("子线程发送来 的消息"); //创建chain Handler1 handler1=new Handler1(); Handler2 handler2=new Handler2(); Handler3 handler3=new Handler3(); //按序编chain handler1.nextHandler=handler2; handler2.nextHandler=handler3; thMsg.setLevel(2); handler1.handle(thMsg); }
责任链的关键点就是上一个chain必须持有下一个chain的引用,尤其是方法的调用上,层层递进,有点类似递归或者循环的味道。
阅读全文
0 0
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java 设计模式之责任链模式
- Java设计模式之责任链模式
- 《Java设计模式》之责任链模式
- 《Java设计模式 》之责任链模式
- JAVA设计模式之:责任链模式
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- 《java设计模式》之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- JAVA设计模式之责任链模式
- java设计模式之责任链模式
- Unicode与ASCII
- 区间第k小 poj2104 可持久化线段树
- 漂亮的Adapter模式-体会RecyclerView的设计实现
- 手把手教你webpack3(8)url-Loader配置简述
- Spring注解方法学习笔记
- Java设计模式之责任链模式
- 第一章作业2-算法时间复杂度和空间复杂度
- 吴恩达机器学习课程(一)之梯度下降原理
- 100种数据恢复的方法?!
- C++ expected initializer before 'myfile'
- 冒泡排序
- Samba
- Android Studio生成UML图
- Git安装配置教程