学习笔记——责任链模式ChainOfResponsibility

责任链模式,主要是通过自己记录一个后继者来判断当前的处理情况。Handler中,再增加一个方法用于设置后继对象,如SetHandler(Handler obj)。

然后Handler类以其子类的处理方法Handler()通过判断后继对象是否存在来操作:

1.没有设置后继对象,自己处理事件

2.有后继对象,交给后继者的Handler()处理。

通过这样的不断调用传递,处理责任将到达最终的对象上。

比如,当我们要处理一个网络请求返回时,一般肯定是写一串函数,然后通过判断来依次执行相应操作,如果采用责任链模式,就可以将判断、执行封装到类中,同时执行顺序通知设置各自的后继对象实现。降低了系统耦合。

时间: 2024-10-05 11:13:33

学习笔记——责任链模式ChainOfResponsibility的相关文章

设计模式学习-责任链模式

1.定义 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止. 2.类图 3.代码示例 1 package com.zhaoyangwoo.chainOfResponsibility; 2 3 /** 4 * Created by john on 16/6/16. 5 * 职责链模式,经费审批场景 6 */ 7 public class Responsibility { 8 9 public static void

最近学习了责任链模式

前言 来菜鸟这个大家庭10个月了,总得来说比较融入了环境,同时在忙碌的工作中也深感技术积累不够,在优秀的人身边工作必须更加花时间去提升自己的技术能力.技术视野,所以开一个系列文章,标题就轻松一点叫做最近学习了XXX吧,记录一下自己的学习心得. 由于最近想对系统进行一个小改造,想到使用责任链模式会非常适合,因此就系统地学习总结了一下责任链模式,分享给大家. 责任链模式的定义与特点 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着

编写计算器程序学习JS责任链模式

设计模式中的责任链模式能够很好的处理程序过程的逻辑判断,提高程序可读性. 责任链模式的核心在于责任链上的元素判断能够处理该数据,不能处理的话直接交给它的后继者. 计算器的基本样式: 通过div+css定义计算器的样式,并在每个按钮上绑定事件响应按钮输入. 输入的元素为数字.小数点.加减乘除运算符时,都是直接显示. 输入为清除所有.清除上一次时直接清除. 输入为等号.百分比.开根号.乘方.分之一时,开始计算. 同时在输入框下面显示上次运算的公式. 1.定义责任元素的基类 包括变量next指向他的后

设计模式 笔记 责任链模式 chain of responsibility

//---------------------------15/04/25---------------------------- //Chain of responsibility 责任链-----对象行为型模式 /* 1:意图: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象 连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 2:动机: 3:适用性: 1>有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定. 2>你想在不明确指定

设计模式学习笔记--职责链模式

1 using System; 2 3 namespace ChainOfResponsibility 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/6/1 6:54:00 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Handler说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public ab

Java设计模式偷跑系列(十八)建模和责任链模式的实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40018231 责任链模式(ChainOfResponsibility): 有多个对象,每一个对象持有下一个对象的引用,形成一条链.请求在这条链上传递.直到某一对象决定处理该请求,可是发出者并不清楚终于哪个对象会处理该请求. 一.uml建模: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGh5X3ljdQ==/font/5a6L5L2T/fo

Java设计模式菜鸟系列(十八)责任链模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40018231 责任链模式(ChainOfResponsibility): 有多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出者并不清楚最终哪个对象会处理该请求. 一.uml建模: 二.代码实现 /** * 责任链模式:有多个对象,每个对象持有下一个对象的引用,形成一条链, * * 请求在这条链上传递,直到某一对象决定处理该请求,

java23种设计模式之十:责任链模式

最近在学习netty中发现其中用到了责任链模式,然后结合自己在写代码中遇到了大量写if...else的情况,决定学习一下责任链模式. 一.什么样的场景下会选择用责任链模式 我们在进行业务逻辑判断时,需要根据传入参数类型的不同做出不同的处理,如果在传入的参数类型相对较少的情况时,可以用if...else来做判断,这样的确是没有什么问题的,但是如果后期由于业务系统的扩展,导致参数类型会随之延伸出很多种不同的处理,这时就需要用责任链模式来抒代码重构,这样会让代码封装的更好.更简洁,阅读性更强,后期如果

PHP设计模式学习笔记: 责任链模式(Chain of Responsibility)

// 抽象书本类 abstract class AbstractBookTopic { abstract function getTopic(); abstract function getTitle(); abstract function setTitle($title_in); } // 书本类,继承自抽象书本类 class BookTopic extends AbstractBookTopic { private $topic; private $title; function __co