前言:【模式总览】——————————by xingoo

  模式意图

  避免请求的发送者,和接受者过度的耦合在一起。一个请求者只需要发送一个请求即可,它的请求具体由后面哪个对象进行响应,并不需要关心。而请求的接受者可以自己处理它,也可以把它像链条一样向后传。

  因此,请求也就意味着有可能丢失,或者说没有确切的安全保障。

  应用场景

  1 降低耦合度

  2 增强指派职责的灵活性

  3 不保证被接受

  模式结构

  Handler 定义一个接口,实现向后传递的过程

 abstract class Handler{
protected Handler successor; public abstract void handleRequest(); public Handler getSuccessor() {
return successor;
} public void setSuccesor(Handler successor) {
this.successor = successor;
} }

  ConcreteHandler 可以负责请求,也可以向后传递

 class ConcreteHandler extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.println("getSuccessor !");
getSuccessor().handleRequest();
}else{
System.out.println("handle in this! request()!");
}
}
}

  全部代码

 package com.xingoo;
abstract class Handler{
protected Handler successor; public abstract void handleRequest(); public Handler getSuccessor() {
return successor;
} public void setSuccesor(Handler successor) {
this.successor = successor;
} }
class ConcreteHandler extends Handler{
public void handleRequest(){
if(getSuccessor() != null){
System.out.println("getSuccessor !");
getSuccessor().handleRequest();
}else{
System.out.println("handle in this! request()!");
}
}
}
public class Client {
public static void main(String[] args) {
Handler handle1,handle2,handle3;
handle1 = new ConcreteHandler();
handle2 = new ConcreteHandler();
handle3 = new ConcreteHandler();
handle1.setSuccesor(handle2);
handle2.setSuccesor(handle3);
handle1.handleRequest();
}
}

  运行结果

getSuccessor !
getSuccessor !
handle in this! request()!

最新文章

  1. bzoj 3202: [Sdoi2013]项链
  2. Uiautomator 2.0之Until类学习小记
  3. Java中Sting转Timestamp
  4. Docker中自动化搭建Hadoop2.6完全分布式集群
  5. [Hibernate] - Fetching strategies
  6. unicode 编码在线转换--javascript
  7. 空格的URL编码
  8. SWFObject文件上传使用记录
  9. 简单几步优化你的windows,加快开机速度(重装windows之后要做的几件事)
  10. Python Django对接企业微信第三方服务回调验证的一些坑
  11. Python:Day40 html
  12. LINUX文件及目录管理命令基础
  13. Python3 解析XML 层序遍历二叉树
  14. Kotlin语言编程技巧集
  15. 配置SecureCRT密钥连接Linux
  16. 1.1 What Is This Book About(这本书是关于什么的)
  17. ffmpeg学习(一)——在window7下编译ffmpeg
  18. 设计模式之笔记--职责链模式(Chain of Responsibility)
  19. 清除list或者map集合,减少内存的占用率
  20. juqery.fn.extend和jquery.extend

热门文章

  1. Altium 拼板方法以及 注意的 地方
  2. odoo字段
  3. 判断库位是否参与MRP运算
  4. 大数据入门第十八天——kafka整合flume、storm
  5. 20155204 王昊《网络对抗技术》EXP1 PC平台逆向破解
  6. 20155216 Exp9 Web安全基础实践
  7. 20155325 Exp6 信息搜集与漏洞扫描
  8. 【转载】C++引用详解
  9. Codeforces 955C Sad powers (数论)
  10. Java中Class类详解、用法及泛化