责任链模式
概述
    使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这一模式的想法是,给多个对象处理一个请求的机会,从而解耦发送者和接受者.
适用性

    1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。2.你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。3.可处理一个请求的对象集合应被动态指定。
参与者

    1.Handler定义一个处理请求的接口。(可选)实现后继链。2.ConcreteHandler处理它所负责的请求。可访问它的后继者。如果可处理该请求,就处理之;否则将该请求转发给它的后继者。3.Client向链上的具体处理者(ConcreteHandler)对象提交请求。
Example
Handler
public interface RequestHandle {void handleRequest(Request request);
}
ConcreteHandler
public class HRRequestHandle implements RequestHandle {public void handleRequest(Request request) {if (request instanceof DimissionRequest) {System.out.println("要离职, 人事审批!");} System.out.println("请求完毕");}
}
public class PMRequestHandle implements RequestHandle {RequestHandle rh;public PMRequestHandle(RequestHandle rh) {this.rh = rh;}public void handleRequest(Request request) {if (request instanceof AddMoneyRequest) {System.out.println("要加薪, 项目经理审批!");} else {rh.handleRequest(request);}}
}
public class TLRequestHandle implements RequestHandle {RequestHandle rh;public TLRequestHandle(RequestHandle rh) {this.rh = rh;}public void handleRequest(Request request) {if (request instanceof LeaveRequest) {System.out.println("要请假, 项目组长审批!");} else {rh.handleRequest(request);}}
}
Client
public class Test {public static void main(String[] args) {RequestHandle hr = new HRRequestHandle();RequestHandle pm = new PMRequestHandle(hr);RequestHandle tl = new TLRequestHandle(pm);//team leader处理离职请求Request request = new DimissionRequest();tl.handleRequest(request);System.out.println("===========");//team leader处理加薪请求request = new AddMoneyRequest();tl.handleRequest(request);System.out.println("========");//项目经理上理辞职请求request = new DimissionRequest();pm.handleRequest(request);}
}
result
要离职, 人事审批!
请求完毕
===========
要加薪, 项目经理审批!
========
要离职, 人事审批!
请求完毕

转载于:https://www.cnblogs.com/hainange/archive/2009/05/13/6153168.html

设计模式--责任链模式(COR)相关推荐

  1. Java设计模式-责任链模式

    Java设计模式-责任链模式,我想这是值得你了解一下下的啦. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持 ...

  2. 设计模式--责任链模式--Java实现

    设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...

  3. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  4. java责任链模式审批请假_Java设计模式-责任链模式

    Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...

  5. 设计模式学习(十四) 责任链模式 COR

    1.责任链模式的定义 有些事情回武汉了几天,导致近几天没有学习= =,很是愧疚  责任链模式的英文名比较长,是Chain of Responsibility,简称为COR模式.其主要任务是构造一系列担 ...

  6. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  7. 大话设计模式—责任链模式

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...

  8. 设计模式 责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

  9. php设计模式-责任链模式

    最近重构代码发现责任链模式非常实用,所以简单总结了一下.总体来说,责任链模式更像是一种简化多种场景下调用处理的一种设计模式,特别适合if-else分支判断很多的场景.比如是根据不同会员等级给予不同的优 ...

最新文章

  1. python3x 线程threading的使用
  2. css超过两行显示为..._使用这些不太常用的CSS属性,布局效率上又提高了一个层次...
  3. maven引入本地jar包
  4. WEBLOGIC 内存溢出 解决方案
  5. JVM - 深入剖析字符串常量池
  6. java调用第三方的webservice应用实例
  7. 6工程文件夹作用_MCUXpresso IDE下SDK工程导入与workspace管理机制
  8. 集群服务器下使用SpringBoot @Scheduled注解定时任务
  9. scala =>用法总结
  10. 综述 | 机器视觉表面缺陷检测
  11. 自定义MyBatis拦截器
  12. jquery M97-datepicker日历控件
  13. (百度贴吧发帖)html5,百度贴吧怎么发帖子
  14. 打开虚拟机电脑就重启和虚拟机不兼容hyper - v无法开启的解决方案。
  15. PHP 定界符EOT用法
  16. win7远程服务器管理工具
  17. word中的回车符去除
  18. JDK8安装时错误1335的解决
  19. 【ROS基础】rosbag 的使用方法
  20. 学习笔记15--环境感知传感器技术之超声波雷达

热门文章

  1. 《软件工艺师:专业、务实、自豪》一2.8 小结
  2. Python之Idel利器jupyter notebook
  3. sublime text 2中Emmet8个常用的技巧
  4. OC类导入Swift工程演示
  5. /usr/bin/ld: cannot find -lfontconfig解决方法
  6. 盛大云主机 就是价格有点贵啊
  7. Strings.Replace 方法的注意事项
  8. 分析 C# 2.0 新特性 -- 范型(Generics)
  9. 本科主要数学科目的页数统计
  10. ubuntu下面制作ubuntu系统启动盘(转载+自己整理)