news 2026/6/15 17:05:51

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/15 11:19:56

Dify文档生成技巧大公开,Agent工具开发者都在偷偷用

第一章:Dify文档生成的核心价值与Agent应用场景Dify 作为一款面向 AI 应用开发的低代码平台,其文档生成功能不仅提升了技术协作效率,更通过 Agent 机制实现了动态内容生成与智能交互。借助 Dify 的可视化编排能力,开发者可将大语言…

作者头像 李华
网站建设 2026/6/15 1:12:46

司马阅世界工业机器人领头羊FANUC(发那科)共话企业AI在工业制造领域的精准落地:2025企业AI落地应用交流会重庆站成功举办

2025年12月12日,司马阅2025企业AI落地应用交流会重庆站在重庆发那科机器人有限公司顺利落幕。本次交流会以“企业AI如何真正落地企业、解决真实问题”为核心议题,汇聚司马阅团队、全球工业机器人头部品牌FANUC(发那科)代表及多位行业相关人士&#xff0c…

作者头像 李华
网站建设 2026/6/11 12:52:17

为什么顶尖团队都在用R+Python做可视化?真相令人震惊

第一章:为什么顶尖团队都在用RPython做可视化?真相令人震惊在数据驱动决策的时代,顶尖科技团队和研究机构正悄然统一技术栈:R 与 Python 的协同可视化方案。这种组合并非偶然,而是基于两者在统计分析与工程化部署上的互…

作者头像 李华
网站建设 2026/6/15 11:45:36

【Python新手村】元组(Tuple):那个“死脑筋”却又超可靠的亲兄弟

哈喽,各位 Python 练习生们!👋上一回我们聊了 列表 (List),那个像超市购物车一样灵活、想装啥装啥、想改就改的神器。今天,我们要见一见列表的亲兄弟——元组 (Tuple)。如果说列表是一个随手记的白板,写错了…

作者头像 李华
网站建设 2026/6/15 8:45:06

如何一键剥离无效依赖?量子计算镜像精简工具链深度解析

第一章:量子计算镜像的依赖精简在构建量子计算模拟环境时,容器化技术被广泛用于封装复杂的运行时依赖。然而,默认镜像往往包含大量冗余库和工具,显著增加部署体积与安全攻击面。通过精细化裁剪依赖项,不仅能提升启动效…

作者头像 李华