news 2026/6/10 13:55:48

2025-简单点-python设计模式之中介者模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025-简单点-python设计模式之中介者模式

中介者是一种行为设计模式, 让程序组件通过特殊的中介者对象进行间接沟通, 达到减少组件之间依赖关系的目的。

中介者能使得程序更易于修改和扩展, 而且能更方便地对独立的组件进行复用, 因为它们不再依赖于很多其他的类。

使用示例: 中介者模式在 Python 代码中最常用于帮助程序 GUI 组件之间的通信。 在 MVC 模式中, 控制器是中介者的同义词。

from__future__importannotationsfromabcimportABCclassMediator(ABC):""" The Mediator interface declares a method used by components to notify the mediator about various events. The Mediator may react to these events and pass the execution to other components. """defnotify(self,sender:object,event:str)->None:passclassConcreteMediator(Mediator):def__init__(self,component1:Component1,component2:Component2)->None:self._component1=component1 self._component1.mediator=self self._component2=component2 self._component2.mediator=selfdefnotify(self,sender:object,event:str)->None:ifevent=="A":print("Mediator reacts on A and triggers following operations:")self._component2.do_c()elifevent=="D":print("Mediator reacts on D and triggers following operations:")self._component1.do_b()self._component2.do_c()classBaseComponent:""" The Base Component provides the basic functionality of storing a mediator's instance inside component objects. """def__init__(self,mediator:Mediator=None)->None:self._mediator=mediator@propertydefmediator(self)->Mediator:returnself._mediator@mediator.setterdefmediator(self,mediator:Mediator)->None:self._mediator=mediator""" Concrete Components implement various functionality. They don't depend on other components. They also don't depend on any concrete mediator classes. """classComponent1(BaseComponent):defdo_a(self)->None:print("Component 1 does A.")self.mediator.notify(self,"A")defdo_b(self)->None:print("Component 1 does B.")self.mediator.notify(self,"B")classComponent2(BaseComponent):defdo_c(self)->None:print("Component 2 does C.")self.mediator.notify(self,"C")defdo_d(self)->None:print("Component 2 does D.")self.mediator.notify(self,"D")if__name__=="__main__":# The client code.c1=Component1()c2=Component2()mediator=ConcreteMediator(c1,c2)print("Client triggers operation A.")c1.do_a()print("\n",end="")print("Client triggers operation D.")c2.do_d()

输出:

Client triggers operation A. Component 1 does A. Mediator reacts on A and triggers following operations: Component 2 does C. Client triggers operation D. Component 2 does D. Mediator reacts on D and triggers following operations: Component 1 does B. Component 2 does C.

可以看出是让中介去写触发之后的逻辑链条。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:32:38

【Dify元数据最佳实践】:构建高可用Agent工具注册体系的4个关键步骤

第一章:Agent 工具注册的 Dify 元数据定义在构建基于 Dify 的智能 Agent 系统时,工具注册是实现功能扩展的核心环节。每一个注册工具都必须附带一组结构化的元数据,用于描述其能力、输入输出格式以及调用方式。这些元数据由 Dify 平台解析并用…

作者头像 李华
网站建设 2026/6/9 10:19:24

使用蚁剑连接一句话木马远程控制小皮

首先我们启动小皮:事先写好一句话木马并以php的格式保存将木马文件放到小皮目录下在蚁剑中添加数据,输入url和连接密码,测试连接后发现连接成功此时我们便可以通过蚁剑访问本机文件了关于127.0.0.1127.0.0.1 是 IPv4 协议中预留的本地回环地址…

作者头像 李华
网站建设 2026/6/10 13:17:15

混合检索中Dify查询优化的8个致命误区,90%工程师都踩过坑!

第一章:混合检索中Dify查询优化的核心挑战在构建基于大语言模型与知识库协同的智能应用时,Dify平台通过混合检索机制融合关键词匹配与向量语义搜索,以提升查询结果的相关性。然而,在实际应用中,该机制面临多项核心挑战…

作者头像 李华
网站建设 2026/6/8 12:30:59

【大厂都在用的测试方法论】:基于Agent的Dify用例自动生成体系

第一章:基于Agent的Dify用例自动生成体系概述在人工智能与自动化测试深度融合的背景下,基于Agent的Dify用例自动生成体系应运而生。该体系通过部署轻量级智能代理(Agent),实现对Dify平台业务逻辑的动态感知与测试需求解…

作者头像 李华
网站建设 2026/6/6 3:15:04

视频帧提取效率低?你必须掌握的Dify底层存储秘技

第一章:视频帧提取效率低?根源剖析与优化必要性在处理视频分析、目标检测或机器学习训练数据准备时,视频帧提取是关键前置步骤。然而,许多开发者面临提取速度慢、资源占用高、输出质量不稳定等问题。这些问题不仅拖慢整体流程&…

作者头像 李华
网站建设 2026/6/7 4:44:41

远程办公软件Top 10:打造从沟通到协作的完整闭环

远程办公在2025年已不再是备选方案,而是常态化的工作模式。然而,很多团队发现:人虽然在线了,效率却断链了。聊天用微信,任务在Trello,文档在云盘,代码在GitLab,开会用Zoom……数据割…

作者头像 李华