设计模式--责任链模式(COR)
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这一模式的想法是,给多个对象处理一个请求的机会,从而解耦发送者和接受者.
适用性
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)相关推荐
- Java设计模式-责任链模式
Java设计模式-责任链模式,我想这是值得你了解一下下的啦. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持 ...
- 设计模式--责任链模式--Java实现
设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...
- 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器
理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...
- java责任链模式审批请假_Java设计模式-责任链模式
Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...
- 设计模式学习(十四) 责任链模式 COR
1.责任链模式的定义 有些事情回武汉了几天,导致近几天没有学习= =,很是愧疚 责任链模式的英文名比较长,是Chain of Responsibility,简称为COR模式.其主要任务是构造一系列担 ...
- 一起学设计模式 - 责任链模式
责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...
- 大话设计模式—责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...
- 设计模式 责任链模式
责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...
- php设计模式-责任链模式
最近重构代码发现责任链模式非常实用,所以简单总结了一下.总体来说,责任链模式更像是一种简化多种场景下调用处理的一种设计模式,特别适合if-else分支判断很多的场景.比如是根据不同会员等级给予不同的优 ...
最新文章
- python3x 线程threading的使用
- css超过两行显示为..._使用这些不太常用的CSS属性,布局效率上又提高了一个层次...
- maven引入本地jar包
- WEBLOGIC 内存溢出 解决方案
- JVM - 深入剖析字符串常量池
- java调用第三方的webservice应用实例
- 6工程文件夹作用_MCUXpresso IDE下SDK工程导入与workspace管理机制
- 集群服务器下使用SpringBoot @Scheduled注解定时任务
- scala =>用法总结
- 综述 | 机器视觉表面缺陷检测
- 自定义MyBatis拦截器
- jquery M97-datepicker日历控件
- (百度贴吧发帖)html5,百度贴吧怎么发帖子
- 打开虚拟机电脑就重启和虚拟机不兼容hyper - v无法开启的解决方案。
- PHP 定界符EOT用法
- win7远程服务器管理工具
- word中的回车符去除
- JDK8安装时错误1335的解决
- 【ROS基础】rosbag 的使用方法
- 学习笔记15--环境感知传感器技术之超声波雷达
热门文章
- 《软件工艺师:专业、务实、自豪》一2.8 小结
- Python之Idel利器jupyter notebook
- sublime text 2中Emmet8个常用的技巧
- OC类导入Swift工程演示
- /usr/bin/ld: cannot find -lfontconfig解决方法
- 盛大云主机 就是价格有点贵啊
- Strings.Replace 方法的注意事项
- 分析 C# 2.0 新特性 -- 范型(Generics)
- 本科主要数学科目的页数统计
- ubuntu下面制作ubuntu系统启动盘(转载+自己整理)