常用设计模式总结--责任链模式
来源:互联网 发布:嵌入式linux系统裁剪 编辑:程序博客网 时间:2024/05/16 16:55
常用设计模式总结--责任链模式
在多线程的编程模型中,责任链模式是一种常用的模式,责任链模式可以将一个任务分解成小的独立的任务单元,让整个任务一目了然。
以一个爬虫爬取某个页面为例,假设url的调度不是有爬虫来管理,而是有专门的urldb模块来实现,那么一个网页的爬取可以分解为以下几个小的子任务。下载网页;解析网页;将当前页面新发现的链接写回urldb。将任务分解成小任务以后,每个小任务的输出就是下一个任务的输入,整个框架就可以清晰明了。辅助于log的信息,在出现问题的时候很容易查找问题出现的地方
废话少说,直接看代码吧
Processor.java
public abstract class Processor {private Processor next;protected int delta;public abstract int doProcess(int base);public void setNext( Processor next ){this.next = next;}public void process(int base){int result = doProcess(base);if( null != next ){next.process(result);}}}
ProcessorChainFactory,负责把小的任务组合起来
package zl.study.designpattern.respchain;public class ProcessorChainFactory {public static Processor assembleChain( Processor ...processor){Processor head = null;Processor pre = null;if( null == processor || 0 >= processor.length){return head;}for(int i = 0; i< processor.length; i ++){Processor current = processor[i];if( i == 0){head =current;}if( null != pre){pre.setNext(current);}pre = current;}return head;}}
示例程序
算了一个算术题
ProcessorAdd.java 加法
package zl.study.designpattern.respchain.test;import zl.study.designpattern.respchain.Processor;public class ProcessorAdd extends Processor{public ProcessorAdd(int delta){this.delta = delta;}@Overridepublic int doProcess(int base) {int result = base + delta;System.out.println(result);return result;}}
ProcessorSub.java 减法
package zl.study.designpattern.respchain.test;import zl.study.designpattern.respchain.Processor;public class ProcessorSub extends Processor{public ProcessorSub( int delta){this.delta = delta;}@Overridepublic int doProcess(int base) {int result = base -delta;System.out.println(result);return result;}}
主程序
package zl.study.designpattern.respchain.test;import zl.study.designpattern.respchain.ProcessorChainFactory;public class RespChainTest {public static void main(String args[]){ProcessorAdd add = new ProcessorAdd(1);ProcessorSub sub = new ProcessorSub(2);ProcessorChainFactory.assembleChain(add,sub);add.process(1);}}
- 常用设计模式总结--责任链模式
- 责任链设计模式
- 责任链设计模式
- 设计模式---责任链
- 责任链设计模式
- 设计模式----责任链
- 设计模式-责任链
- 责任链设计模式
- 责任链设计模式
- 设计模式:责任链
- [设计]责任链模式
- 设计模式--责任链
- 责任链设计模式
- 设计模式----责任链模式
- 【设计模式】责任链模式
- 设计模式---责任链模式
- 设计模式:责任链模式
- 设计模式--责任链模式
- Windows7系统下文件权限批量处理问题
- 关于Android横竖屏切换的解决方法
- 【多重背包】HDU 1059
- cilk之User Guide学习笔记(4)cilk_for的分析
- 浅谈MVC模式与三层架构
- 常用设计模式总结--责任链模式
- javascript 设置lastModified的时间格式
- centos 学习笔记--文件处理命令
- Entity Framework菜鸟初飞【4】—— 增删改查
- thinking in NoSQL and moreSQL
- 函数调用约定:_stdcall,_cdecl,_fastcall
- VB语言基础
- poj 1325 Machine Schedule 匈牙利二分匹配 基础
- 赵老师的留下来