首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >责任链的常见用法?

责任链的常见用法?
EN

Stack Overflow用户
提问于 2013-08-23 15:48:13
回答 1查看 998关注 0票数 1

我看到一个教程视频解释了责任链设计模式,我想我理解它是如何工作的,但我不确定什么时候我会真正使用它。责任链的一些常见用法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 05:39:59

来自GoF

已知使用 几个类库使用责任链模式来处理用户事件。它们对Handler类使用不同的名称,但想法是相同的:当用户单击鼠标或按下键时,事件将生成并沿链传递。MacApp App89和ET++ WGM88称其为"EventHandler“,赛门铁克的TCL库Sym93b称其为”官僚“,NeXT的AppKit Add94使用了”Responder“的名称。 用于图形编辑器的Unidraw框架定义了将请求封装到组件和ComponentView对象VL90的命令对象。命令是指组件或组件视图可以解释命令以执行操作的请求。这与实现中描述的“请求为对象”的方法相对应。组件和组件视图可以是分层结构的。组件或组件视图可以将命令解释转发给其父视图,而其父视图可以将命令解释转发给其父视图,等等,从而形成一个责任链。 ET++使用责任链来处理图形化更新。每当图形对象必须更新其外观的一部分时,它都会调用InvalidateRect操作。图形对象本身无法处理InvalidateRect,因为它对其上下文了解不够。例如,图形对象可以被包围在对象中,例如转换其坐标系的滚动器或缩放体。这意味着该对象可能会被滚动或缩放,从而使其部分处于视野之外。因此,InvalidateRect的默认实现将请求转发给封闭的容器对象。转发链中的最后一个对象是一个窗口实例。通过时间窗口接收请求,保证了失效矩形的正确转换。窗口通过通知窗口系统接口并请求更新来处理InvalidateRect。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18406925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档