设计模式

多加点辣也没关系5 小时前
设计模式·解释器模式
设计模式-解释器模式在软件开发中,经常会遇到这样的场景:需要解析和执行一种特定的小型语言或表达式规则。例如,计算器需要解析 1 + 2 * 3 这样的数学表达式;SQL 引擎需要解析 SELECT * FROM user WHERE age > 18 这样的查询语句;机器人需要解析"前进 10 步,左转 90 度"这样的指令序列。如果不使用设计模式,通常的做法是为每种语法规则写一堆 if-else 来硬编码解析逻辑,导致代码臃肿、扩展困难、可读性差:
Asurplus7 小时前
设计模式·创建型·结构型·行为型
23中设计模式如您在阅读中发现不足,欢迎留言!!!
geovindu8 小时前
开发语言·后端·设计模式·golang·企业级信号量模式
go: Semaphore Pattern项目结构:调用:输出:
写了20年代码的老程序员13 小时前
设计模式·ai编程
写了 20 年 Java,我发现 90% 的 if-null 和 try-catch 其实是因为缺了一条原则你写过一百遍 if (str != null && !str.isEmpty()) { try { ... } catch (...) { ... } },却从没想过:"宽容"到底应该宽容到哪一步? Postel 定律统治了软件工程 45 年,没回答这个问题。这篇文章给出我的答案,并把它命名为 有界宽容原则(Bounded Leniency Principle)。
货拉拉技术16 小时前
人工智能·算法·设计模式
私域转化率翻倍的秘密:我们把多模态Agent融进了私域营销近年来,AIGC技术的高速发展让内容生产从"人工驱动"迈向"智能协同"。随着多模态大模型的快速成熟,各行业开始走向文案、图像、视频、音频等多模态内容的智能生成,品牌营销的生产效率、创意边界、投放节奏都在发生变化。 本文将结合货拉拉实际经验,系统介绍在私域运营场景下利用大模型进行多模态营销素材生产的技术体系、工作流程与应用实践。
看山是山_Lau16 小时前
设计模式·抽象工厂模式
抽象工厂模式:一整套对象族如何统一创建?上一篇讲了工厂方法模式。它解决的问题是:一个对象的创建逻辑,不应该到处散落在业务代码里。比如诊断服务需要创建不同通信对象:
木易 士心16 小时前
android·设计模式·架构
深入理解 OKHttp:设计模式、核心机制与架构优势OKHttp 作为一款优秀的网络请求框架,其源码中蕴含了许多巧妙的设计思想。本文将从 设计模式、核心机制和整体优势 等角度,带你深入剖析 OKHttp 的内部实现原理。
likerhood17 小时前
设计模式·外观模式
设计模式 · 外观模式(Facade Pattern)在日常开发中,我们经常会遇到这样一类代码:业务目标本身很简单,但为了完成它,客户端不得不依次调用很多底层类。
++==18 小时前
观察者模式·单例模式·设计模式
设计模式:单例模式和观察者模式实现方式以及优化一个类,从头到尾只能有一个对象,全世界共用这一个实例。类的所有成员函数(包括普通成员函数、友元函数)、内部定义的代码,都属于「类的作用域」,在这个作用域内可以直接访问该类对象的私有(private)和保护(protected)成员,不受访问权限限制。
doubledong199418 小时前
设计模式
分形世界与设计模式世界是分形的,能分至微末,比如每一片雪花都不一样,每一片叶子都不一样;而在微观世界下,世界又是统一的,所有同类的基本粒子没有任何区别。从物理角度讲,这个世界是底部尖尖的,仅有少数基本粒子组成,而顶部是繁密的不一样的雪花和不一样的叶子。但从人类角度讲,人生活需要的精度没有那么高,人不需要知道路上铺的10万块砖头之间有什么细微区别,因为不影响他走路,因此人类世界不面对这分形中的微末,而是面对分形中的枝干。因此人将分形的枝干外翻置顶,分形的微末朝内,形成了底部尖尖的,顶部尖尖的,但中间鼓鼓的世界观。
多加点辣也没关系18 小时前
设计模式·访问者模式
设计模式-访问者模式在软件开发中,经常会遇到这样的场景:一个对象结构包含多种不同类型的元素,需要对它们执行一系列不相关的操作。例如,编译器的 AST(抽象语法树)中包含了变量节点、赋值节点、表达式节点等多种节点类型,需要对它们执行类型检查、代码生成、格式化打印等多种操作;电商系统中包含普通商品、电子商品、食品等多种商品类型,需要对它们执行计算运费、计算税费、生成报表等操作。如果把这些操作全部写在元素类中,每新增一种操作就要修改所有元素类,严重违反开闭原则:
咖啡八杯18 小时前
java·后端·设计模式·原型模式
GoF设计模式——原型模式本文是【GoF设计模式】系列第5篇有些场景下,创建一个对象不是简单的 new 就能搞定的——可能要查数据库、调接口、做复杂计算,初始化过程很重。更麻烦的是,有时需要创建大量相似对象,每个只有细微差别:
多加点辣也没关系18 小时前
设计模式·状态模式
设计模式-状态模式在软件开发中,经常会遇到这样的场景:一个对象的行为会随着其内部状态的改变而变化。例如,订单从"待支付"→"已支付"→"已发货"→"已完成"的流转过程中,每个状态下允许的操作都不同;电梯在"停止"“上行”“下行"三种状态下,对"开门”“关门”“上行”"下行"指令的响应也不同。如果使用大量的 if-else 或 switch-case 来管理状态切换,代码会变得臃肿、晦涩、难以维护:
多加点辣也没关系19 小时前
设计模式·备忘录模式
设计模式-备忘录模式在软件开发中,经常会遇到这样的场景:需要记录一个对象的内部状态,以便在后续某个时刻能够将其恢复到之前的状态。例如,文本编辑器的撤销功能、游戏中的存档/读档、数据库事务的回滚、虚拟机的快照等等。如果不使用设计模式,通常的做法是由外部对象直接访问目标对象的内部字段来保存和恢复状态,但这会严重破坏封装性:
雪度娃娃19 小时前
microsoft·设计模式·中介者模式
行为型设计模式——中介者模式为了有一个好的面向对象的设计,我们必须创建许多相互交互的类。如果不应用某些原则,最终的框架将以一团糟而告终,其中每个对象都依赖于许多其他对象才能运行。为了避免紧密耦合的框架,我们需要一种机制来促进对象之间的交互,其方式是对象不知道其他对象的存在。
多加点辣也没关系19 小时前
设计模式·中介者模式
设计模式-中介者模式在软件开发中,经常会遇到这样的场景:多个对象之间存在着复杂的网状交互关系——每个对象都需要与其他多个对象通信,导致对象之间互相引用、紧密耦合。例如,聊天系统中每个用户需要持有其他所有用户的引用才能发送消息;GUI 对话框中按钮、文本框、下拉框等组件之间存在联动逻辑,组件间互相引用让代码难以维护。如果让对象之间直接通信,类图会变成一张"蜘蛛网":
geovindu2 天前
开发语言·后端·设计模式·golang·读写锁模式
go: Read-Write Lock Pattern项目结构:调用:输出:
行走的陀螺仪2 天前
开发语言·javascript·设计模式
[特殊字符] JavaScript 设计模式完全指南:从入门到精通(含20种模式)前言:设计模式不是什么高深莫测的东西,它就是前人踩了无数坑之后总结出来的"套路"。就像做菜有菜谱,打篮球有战术,写代码也有设计模式。掌握它们,你的代码会变得更优雅、更好维护、更容易扩展。
小陶来咯2 天前
人工智能·react.js·设计模式
AI Agent 设计模式:ReAct 深度解析Reasoning + Acting,2022 年 10 月由普林斯顿大学与 Google 联合提出(arXiv: 2210.03629)。