设计模式学习笔记四:责任链模式

Sora与《穆赫兰道》:AI视频真实感的认知边界 ‘真实感’是生成式视频的核心目标,但其技术实现常局限于物理建模与统计拟合,而人类对真实的感知却根植于心理预期、感官错位与语义张力。Sora代表当前AI在物理一致性与时间连贯性上的巅峰能力,却系统性弱化了认知扰动、情绪噪点与元叙事等关键维度;《穆赫兰道》则以精心设计的‘不协调’激活观众深层共情,揭示真实感的本质是可信的失序而非完美的复刻。这种对比超越工具优劣,直指AI视频创作的根本命题:如何让算法输出承载人性褶皱?本文结合提示词重构、噪声干预与林奇式剪辑,为创作者提供可落地的‘真实感增强方法论’。 阅读详情

责任链模式:Responsibility Of Chain,简称RoC。链式结构,由多个结点组成,具备依次向下传递的特性,到达每个结点可以选择做处理或向下传递。

每个结点可以设计为独立的功能单元,好处就是实现了解耦。设计好传递条件,即可清除在哪个结点做什么,出问题去哪里修改。

 

我简单画了一个时序图,不大标准,希望能清晰表达意思。

x.a 和x.b代表if…else逻辑。



下面用一个例子供参考,背景是我之前想实现一个表达式解析工具,打算使用责任链来实现每个单元的处理逻辑。后来发现有了ANTLR类库可以直接生成就没有继续实现,有兴趣的朋友可以关注下,此是题外话。

/*  
 * ResponsibilityOfChain.java 1.0 2014/08/11  
 *   
 * 声明:欢迎转载,请注明出处。  
 *   
 */ 

package com.array7.roc;

public interface IBaseChain {
	public void execute(IBaseChain chain);
}

package com.array7.roc;

import java.util.ArrayList;
import java.util.List;

public class BaseChain implements IBaseChain {
	List<IBaseChain> chains = new ArrayList<IBaseChain>();  
	int index = 0;
	public void execute(IBaseChain chain) {
		if (index == chains.size()) {
			System.out.println("arrived end!");
			return;
		}
		IBaseChain nextChain = chains.get(index);
		index ++;
		nextChain.execute(chain);
	}
	public BaseChain set(IBaseChain chain) {
		this.chains.add(chain);
		return this;
	}
	
	public static void main(String[] args) {
		BaseChain chain = new BaseChain().set(new SecondNode()).set(new MinuteNode()).set(new HourNode());
		chain.execute(chain);
	}
}

package com.array7.roc;

public class HourNode implements IBaseChain {

	public void execute(IBaseChain chain) {
		System.out.println("HourNode Chain...");
		chain.execute(chain);
	}

}

package com.array7.roc;

public class MinuteNode implements IBaseChain {

	public void execute(IBaseChain chain) {
		System.out.println("MinuteNode Chain...");
		chain.execute(chain);
	}

}


package com.array7.roc;

public class SecondNode implements IBaseChain {

	public void execute(IBaseChain chain) {
		System.out.println("Second Chain...");
		chain.execute(chain);
	}

}



java23种设计模式-责任链模式 责任链模式是一种行为型设计模式,允许将请求沿着处理链传递,直到有一个处理者处理它。每个处理者决定自己处理请求或传递给下一个处理者,实现请求发送者与接收者的解耦。 阅读详情

相关推荐

DesignPattern 设计模式学习笔记(面试和工作必备)

最近有很多粉丝留言:“学设计模式有什么用啊,好像我工作中都用不到设计模式,但每次面试都要问实际项目中使用了哪些设计模式,我都答不上来。” 面对这样的问题,我想说设计模式真的很重要。曾经我也认为学设计模式没什么用,但用过了都说好。所以,猿人花了一个星期的时间给大家整理了最常用的设计模式,通过源码和文档的形式分享给大家。 希望大家认真学习掌握,真正学以致用。不仅面试时要对答如流,实际工作中也要加以应用,这样能力才会得到提升。 一、设计模式介绍 设计模式(Design pattern)代表了最佳的实践,通常被有经

猿码天地 595

设计模式之责任链模式

基于数据实现 基于链表实现 优点 允许动态的增加和删除职责,且由用户决定是否执行某种操作。 实现了被操作对象和操作的解耦。 一个命令可以被多个处理器执行,例如各种框架中的拦截器 缺点 系统复杂度提高,容易出错。即组链时候不合理,可能导致请求得不到执行,还有可能将链变成一个环,请求在里面循环,永远都完不了。 影响性能,出现递归调用,容易造成栈溢出 适用场景 由用户确定实现怎样的处理的流程。 不确定是否需要添加这种处理的情况。 把任务分解,大的任务分解成小步进行处理。

秃头的博客 1076

机器学习第五章之决策树模型

机器学习专题系列

wangyutao12345的博客 5187

责任链模式

一、定义:使多个对象都有机会处理请求,从而避免请求的发送至和接受者之间的耦合关系。将这个对象连成一条链,并沿这条两传递该请求,一个处理完后,转给下一个。 责任链上的处理类可以都对请求做处理,也可以根据需求条件只有一个或者部分类对请求处理。 二、结构图 好处: 当客户提交一个请求时,请求是沿着链传递,每个责任类各自处理各自的逻辑,互不影响,而且可以随时添加或修改一个请求的结构,增强了给对象指派职责...

w1lgy的博客 511

SAP 财务快速记账之--科目分配模型(Account assignment model )

SAP FICO 运维解决方案

lijinbao171022的博客 1773

从轻量化到高精度:3DXML 转 STP 的工程数据升级技术指南

本文详细解析了3DXML转STP格式的工程数据升级技术,对比了两种格式在轻量化和高精度方面的特性差异,并提供了CATIA、FreeCAD及Python编程等多种专业级转换方案。通过实际案例展示了如何确保转换过程中的数据精度,适用于CAD设计、精密制造等场景,帮助工程师实现工程数据的高效升级。

weixin_29201859的博客 215

设计模式学习总结:责任链模式

​ 本文为笔者在阅读一些书籍、博客、专栏等资料后所总结的个人对于责任链模式的笔记,由于笔者才疏学浅,若有不足之处,还望各位加以斧正,您的建议与鼓励都是笔者源源不断的前进动力。感谢! 文章大纲如下: 责任链模式的简单认识 责任链模式的简单应用 两种责任链的实现方法:基于数组、链表 责任链的一些简单应用 责任链模式在源码中的体现 责任链模式的优缺点 ###责任链模式简单认识 Avoid coupling the sender of a request to its receiver by givin

weixin_44836808的博客 509

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

游戏设计模式学习笔记(16)责任链模式

游戏设计模式学习笔记(16)责任链模式 参考: 《设计模式与游戏完美开发》 《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN) 《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns) 【游戏设计模式】浅墨_毛星云: http...

l773575310的博客 375

在WebView中对第三方H5页面的文本密码框添加自定义随机键盘

前言: 首先介绍一下这个需求的背景,由于公司是涉及到金融行业的需要与银行对接资金存管。出于保密性这里不直接列出公司名字和银行名字。从2018年国家对金融行业大整改以来,为了能够顺利通过备案,我们也跟着政府的脚步一步一步走向合规。 好了,大致就是因为要通过备案,必须把这个需求实现,否则将不会通过。 需求内容就是,当客户端有关资金交易的时候,会通过加密数据以及秘钥的方式把第三方银行的页面(充值、...

比较喜欢、笑的博客专栏 1586

DINOv2 基于自定义数据集进行图片分类预测

(前提是安装好pytorch)1. pip安装2. 下载dinov2提供的预训练模型,需要自行前往网站上查找dinov2模型进行下载。模型需要下载三个文件:下载完成后将上述三个文件放置在本地一个名为dinov2_base的文件夹中即可。

sinat_34770838的博客 6668

HeadFirst 设计模式学习笔记15--责任链模式拾零

本文已搬家至【HeadFirst 设计模式学习笔记】14 责任链模式拾零

gnuhpc的专栏 4914

QGIS实战:5分钟搞定谷歌地图、高德、天地图等多源地图加载(附最新图源URL)

本文详细介绍了如何在QGIS中快速加载谷歌地图、高德、天地图等多源地图,提供2023年验证可用的最新图源URL和配置步骤。从环境准备到高级技巧,涵盖国内外主流地图服务的完整解决方案,帮助用户提升GIS工作效率。

weixin_29210759的博客 1224

设计模式の状态&策略&责任链模式

本篇是关于设计模式中的状态模式、策略模式、以及责任链模式的学习笔记。

西岭千秋雪的博客 1249

模型预测控制(MPC)解析(二):单输入单输出系统

在上一篇中,为了便于说明,预测控制系统采用单输入单输出系统为例进行设计。由于系统模型使用的是状态空间方程,于是可以很容易的将这种设计方法可以扩展到多输入、多输出系统。

行者无疆的博客 8226

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

策略模式与责任链模式学习笔记:从入门到理解

策略模式与责任链模式学习笔记 策略模式和责任链模式都是常用的行为型设计模式,但适用场景不同。策略模式通过封装不同算法,允许运行时动态切换(如电商促销活动);责任链模式则将请求沿处理链传递,直至被处理(如审批流程)。策略模式强调算法替换,责任链模式侧重请求传递。学习时建议结合生活案例(如出行方式/审批流程)和代码示例理解其差异,掌握何时选择何种模式。

m0_63949203的博客 1483

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式:责任链模式

这是张富涛的第1篇原创 设计模式:责任链模式 1. 责任链模式简介 责任链模式(Chain of Responsibility Pattern)是一种设计模式,对于责任链模式可以理解为进行一次“击鼓传花”的游戏,玩家围成一个圈,每个玩家都有一位下家,这个玩家只要知道自己的下家就可以了,花到了自己手里,如果鼓声没有决定自己喝酒(自己不满足执行的要求),就将花传给自己的下家,直到最终有一个玩家喝酒或者花传到最后一位玩家那没有下家了。 图:红楼梦中击鼓传花与责任链模式 将所有执行者围成一条直链,或者一条环链,.

张富涛的博客 204

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

设计模式之禅学习笔记--责任链模式

一、定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果。 二、通用类图 责任链模式的核心在“链”上,“链”是由多个处理者ConcreteHandler组成的。 1:抽象的处理者实现三个

xiang912的专栏 889

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

责任链模式属于设计模式中的行为型模式。顾名思义,责任链模式就是为请求者创建一个接收者对象的链,对请求的发送者和接收者解耦。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依次类推。

爱辰 402

【学习笔记】设计模式-责任链模式(Chain Of Responsibility)

文章目录0 设计模式1 责任链模式2 实现思路3 需要的类4 具体实现4.1 Filter(创建过滤器接口)4.2 多个实现过滤器接口的具体过滤器4.2.1 FaceFilter(将:) 替换为 ^V^)4.2.2 HtmlFilter(将< 替换为 [ 将> 替换为 ])4.2.3 SensitiveFilter(将996 替换为 007)4.3 FilterChain(实现过滤器接口的具体责任链)4.4 Message(消息实体,根据实际情况完全可以用一个字符串去替代)4.5 测试类5

五条的博客 776

设计模式学习笔记——10 责任链模式

责任链模式 定义 责任链模式使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连城一条链,并沿着这条链传递该请求,直到有对象处理它为止。 优点 降低耦合度。它将请求的发送者和接收者解耦 简化了对象,使得对象不需要知道链的结构 增强给对象指派职责的灵活性,允许动态地新增或者删除责任链 增加新的请求处理类方便 缺点 每个请求都是将责任链从头遍历到尾,如果较长,性能有影...

GM. 164

设计模式学习笔记(六:责任链模式)

1.1概述     使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。这就是责任链模式。     责任链模式是使用多个对象处理用户请求的成熟模式,责任链模式的关键是将用户的请求分派给许多对象,这些对象被组织成一个责任链,即每个对象含有后继对象的引用,并要求责任链上的每个对象,如果能处理用户的请求,...

nimeimeidewen的专栏 202

Activiti工作流学习笔记(四)——工作流引擎中责任链模式的建立与应用原理

本文需要一定责任链模式的基础与Activiti工作流知识,主要分成三部分讲解: 一、简单理解责任链模式概念二、Activiti工作流里责任链模式的建立三、Activiti工作流里责任链模式的应用 一、简单理解责任链模式概念 网上关于责任链模式的介绍很多,菜鸟教程上是这样说的:责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收

sunny潘先生的博客 914

设计模式学习笔记

保证某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。通过一个工厂类来集中管理对象的创建逻辑,客户端无需直接实例化具体类,实现对象创建与使用的解耦。简单工厂模式是工厂模式的一种。定义了一个创建对象的抽象方法,由子类决定要实例化的类。将对象的实例化推迟到子类。每个子类都可以实现工厂接口以提供具体的对象实例化过程提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式允许客户端在不指定具体类的情况下,创建一系列的产品对象。

陈暗暗的博客 1149

【学习笔记】责任链模式

责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 介绍 意图:避免请求发送者与接...

dingpeiqiang的博客 470

【2013-12-17】设计模式学习笔记:责任链模式

基于《设计模式之禅》一书,介绍责任链模式(Chain of Responsibility Pattern)的 Java 实现。通过多级 ChainHandler 依次处理请求的示例,展示责任链如何解耦请求发送者与处理者,实现灵活的请求分发与升级机制。

cstriker1407的专栏 227
上一篇: 设计模式学习笔记三:工厂方法模式
下一篇: 庄子·内篇·养生主第三
七郎
博客等级 码龄14年 31粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值