设计模式

善良勤劳勇敢而又聪明的老杨7 小时前
设计模式·ai编程
【AI编程系列】MCP 常用设计模式解读一个成熟 MCP 系统通常不是“把所有 REST API 原样暴露为工具”,而是分成四层:用户Host / Agent 应用
geovindu9 小时前
java·开发语言·后端·设计模式·策略模式·行为模式
java: Strategy Pattern在复杂业务系统中,流程往往包含多个环节,且每个环节都可能发生变化。策略模式(Strategy Pattern)通过定义一组可互换的算法族,将「变化」封装起来,使业务逻辑更加清晰、易于扩展。本文以珠宝全业务流程为例,结合依赖注入(DI)容器、日志抽象、重试熔断等机制,演示如何用 Java 21 构建一个高并发、可维护的业务流程调度系统。
码匠许师傅20 小时前
c++·设计模式·uml
【设计模式精讲】29.行为型模式总结与对比(Behavioral Patterns Summary)【摘要】:行为型模式常被压缩成「一堆回调技巧」,十一种模式背起来像十一道独立考题。其实按「各自要解决的问题」聚类,四个问题就装下了:一组对象怎么对话(观察者/中介者/责任链)、变化的行为装进哪里(策略/模板方法/状态)、过去怎么留住(命令/备忘录)、结构怎么加工(迭代器/访问者/解释器)。同组是近亲,结构最像、最易混淆,本文逐组细说区别与联系,重点辨析「通信三兄弟」;跨组模式几乎不会认错,却常串成流水线。再以横向对比表、决策树、组合案例、常见误判与评审清单收口。读完你能对着一段交互代码说出:问题属于哪一组
geovindu1 天前
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
CSharp: Observer Pattern在珠宝业务系统中,从原料采购、设计加工到质检、物流、财务、营销乃至人事培训,一条完整业务链路往往横跨多个部门。传统做法是各部门在流程节点上轮询或硬编码调用,导致模块之间高度耦合、扩展困难。观察者模式(Observer Pattern)通过「主题发布、观察者订阅」的方式,让业务阶段变更事件能够按需精准通知到对应部门,既降低了耦合,又提升了系统的可维护性与并发能力。本文以 C# .NET 10 为例,结合领域事件、依赖注入与重试熔断机制,完整演示观察者模式在珠宝全流程业务中的落地实践。
YHHLAI2 天前
设计模式
NestJS 后端开发实战:从设计模式到 CRUD 全栈本文基于一个 NestJS 学习项目,从工厂设计模式讲起,逐步深入到 NestJS 模块化架构和完整 CRUD API 的实现。适合前端开发者入门后端开发。
2401_868534782 天前
设计模式·需求分析
长远目标 Long-term Goal 老题沿用What goal & How long you’ve had this引出话题Alright, so...the goal that I’ve set for myself is to get into a top university in the world, like Oxford, Cambridge, or Harvard. I’ve had it ever since my first year in high school. I remember having this talk give
吃饱了得干活2 天前
后端·设计模式·架构
Java设计模式实战:一个支付模块的重构之旅,层层递进理解设计模式精髓设计模式不是背出来的,而是在解决实际问题的过程中自然浮现的。很多同学学设计模式时,往往陷入“每个模式都认识,但不知道什么时候用”的困境。
vivo互联网技术2 天前
设计模式·架构·领域驱动设计
软件不是从数据开始,而是从现实开始 | KDC 系列 01作者:vivo 互联网存储团队 - Xiao Bo AI 合作者:ChatGPT(GPT-5.5) 创作模式:Human-led, AI-collaborated 责任声明:文章观点、理论体系及最终内容由作者负责;AI 参与讨论、推演、表达优化及部分内容生成。 当 AI 应用开始在运行时解释数据、选择工具并影响业务状态时,数据表示中的遗漏和歧义可能直接转化为行动风险。本文从退款案例出发,提出 Reality First 的观察顺序:先明确系统面对的领域现实,再讨论现实模型、数字表示以及验证反馈如何共同支撑
码匠许师傅2 天前
c++·设计模式·uml·模板方法模式
【设计模式精讲】27.模板方法模式(Template Method)【摘要】:三个后台任务类各自手写同一套仪式——初始化、循环、异常捕获、收尾统计,三份代码长得像又各缺一角:有的忘了 try,有的收尾顺序不对,加「统一超时」要改三处将来 N 处。本文从仪式的复制讲起,给出模板方法的 GoF 意图:在基类固化算法骨架,把可变步骤延迟到子类——骨架非虚、钩子分「必填纯虚」与「可选默认」两档;C++ 特有的 NVI 惯用法(公有非虚 + 私有虚)与模板方法互为表里,现代版补上 final、函数注入版(骨架 + 局部策略)与 CRTP 编译期骨架;好莱坞原则「别调用我们,我们会调
码匠许师傅2 天前
java·设计模式·访问者模式
【设计模式精讲】28.访问者模式(Visitor)【摘要】:第 12 篇组合模式的结尾埋过一句「需要按类型分派时升级到访问者」,第 20 篇解释器又留下「操作在节点内 vs 操作外置」的悬念——本篇收线。表达式树已有求值,现在要打印、要求导、要统计变量,每种新操作都要改所有节点类;dynamic_cast 链虽能外置操作,却顺序敏感、新增类型静默漏掉。本文给出访问者的 GoF 意图:在不改元素类的前提下为结构加新操作,核心机关是双重分派——accept 调 visit,visit 重载选具体行为;C++98 版用 const 重载族贯穿只读访问,现代版给
码匠许师傅3 天前
c++·设计模式·策略模式·uml
【设计模式精讲】26.策略模式(Strategy)【摘要】:第一篇埋的伏笔到此兑现——反面教材一号 calcPrice 的 switch 又长回来了,二十七个分支,每加一种定价全函数回归。本文从「算法平行可换」与「状态依次迁移」的分野讲起,给出策略模式的 GoF 意图:定义算法族、各自封装、彼此可互换,让算法独立于使用它的客户变化;C++98 版把定价规则做成可注入的策略对象(自带费率与门槛数据),现代版给出 std::function 策略、模板策略(STL 比较器的形态)、以及把两个策略组合成链的高阶函数。C++ 的特殊地位值得一提:迭代器之后,策略
Ysx3 天前
设计模式
AI 问答不再"一本正经地胡说":30 轮提示词迭代,沉淀 4 条防幻觉铁律面向读者的快速结论:让 AI 助手不乱编,关键不在"换个更大的模型",而在提示词里把"不知道时怎么办"的路径写死。经过生产环境 30+ 轮迭代,我把它收敛成 4 条可复制的工程铁律——每条都有落地写法和反面教材。文末的 validator.py 静态校验器,能把其中最容易回归的两条变成 CI 自动检查,改提示词时违规直接拦下。
码匠许师傅3 天前
c++·ui·设计模式·状态模式·uml
【设计模式精讲】25.状态模式(State)【摘要】:订单能支付、能发货、能关闭——每种动作在每种状态下都有不同答案,直觉的实现是给每个方法配一份全量 switch,于是「Created/Paid/Shipped」的分支在五个方法里各复制一遍,加一个状态全体加 case,合法的迁移图散落得没人能一眼看清。本文从订单状态机的 switch 蔓延讲起,给出状态模式的 GoF 意图:状态一变、行为整个换一套,对象「看起来像换了一个类」;状态对象无状态、全程共享一份(与享元、单例同宗),迁移由当前状态自己决定;现代版给出迁移表与 C++17 的 varia
geovindu3 天前
java·开发语言·后端·观察者模式·设计模式·行为模式
java:Observer Pattern本文基于 Java 21 实现珠宝加工业务流程的观察者模式(Observer Pattern)实战案例,覆盖从原料采购、设计、加工、质检、包装、物流到财务的全流程事件驱动设计。
码匠许师傅4 天前
c++·观察者模式·设计模式·uml
【设计模式精讲】24.观察者模式(Observer)【摘要】:传感器每来一个新样本,当前值面板、统计面板、告警模块都该刷新——直觉的写法是在 onSample 里逐个调用三个面板,订阅者从此焊死在发布者体内,加一块面板改一次传感器。本文从 RG 的经典气象站讲起,给出观察者的 GoF 意图:一对多依赖、状态一变、全体自动通知——发布者对订阅者的认知降到「一个接口」为止;C++98 版覆盖 notify 的重入副本、推与拉两种模型,现代版给出 std::function 槽位、RAII 订阅令牌与 weak_ptr 三件套,把「观察者悬垂」这个 C++ 最著
小程故事多_804 天前
人工智能·设计模式·重构
从快速迭代到稳定存续,Google五大设计模式重构长效AI智能体落地逻辑在当下AI应用落地的浪潮中,绝大多数人都陷入了一个共性误区,我们过度追求AI智能体的响应速度、对话流畅度、任务执行效率,执着于打造“跑得快”的智能体。无论是对话问答、简单工具调用,还是单次场景化任务处理,短期测试效果总能让人眼前一亮。只要是一次性、短周期的即时任务,市面上绝大多数智能体模型都能交出不错的答卷。
码匠许师傅5 天前
c++·设计模式·软件工程·uml·中介者模式
【设计模式精讲】22.中介者模式(Mediator)【摘要】:一个登录对话框,用户名变了要刷新按钮状态,按钮按下要冻结所有输入框,回调返回又要逐一解冻——每个控件都持有并调用其他所有控件,五个控件织出十条网线,加一个验证码框全体返工。本文从这张依赖网讲起,给出中介者的 GoF 意图:用一个对象封装一组对象的交互,网状收拢成星状——同事只认识中介者,规则集中成一处可单测的代码;C++98 版用 widgetChanged 单入口实现,现代版再用 std::function 回调槽让同事连中介者接口都不必认识。本文重点辨析中介者与观察者——同样是星型,一个是有
2401_868534785 天前
c++·设计模式
网规备考_2.4 路由协议一、考点分析路由协议是网规考试中分值占比最大的考点之一,选择题和案例题均有涉及。Internet由不同自治系统(AS)互连而成,AS内使用内部网关协议(IGP),AS间使用外部网关协议(EGP)。IGP主要包括RIP、OSPF、IS-IS、IGRP、EIGRP;EGP主要是BGP。需要对比掌握各协议的特点、算法、报文类型和应用场景。表1:2.4 路由协议考点分析
cpp_learner5 天前
c++·设计模式
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道最近在学习ffmpeg,代码中需要跨线程传递数据,所以用到了责任链模式进行传递,遂来学习一下责任链模式是如何进行处理的。
码匠许师傅5 天前
c++·设计模式·软件工程·uml·备忘录模式
【设计模式精讲】23.备忘录模式(Memento)【摘要】:命令模式靠「逆操作」撤销了绘图程序,但文本编辑器是另一回事——用户随手打字删字、移动光标,操作琐碎得没有形状。两条歪路摆在面前:为存档把字段全 public,封装陪葬;或者整个对象拷一份,句柄崩、「哪些字段属于状态」没人说得清。本文给出备忘录模式的 GoF 意图:在不破坏封装的前提下捕获并外化对象内部状态——C++ 用嵌套类加 friend 精确表达「只有本体能拆信、看守者只管邮递」的宽窄接口;现代版补上移动语义、快照与命令的成本曲线(大型系统的混合方案),以及值语义快照的取舍。文末对照 std