文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页
摘要: 一、备忘录模式介绍 在软件开发中,经常需要实现一些需要状态回滚的功能,例如: 撤销 (Undo) 和 重做 (Redo) 操作。游戏存档和读档。事务 (Transaction) 操作中的回滚 (Rollback)。浏览器会话恢复。 直接让外部对象访问并保存一个对象的内部状态,会严重破坏该对象的封装性 阅读全文
posted @ 2025-08-30 00:20 NeoLshu 阅读(8) 评论(0) 推荐(0)
摘要: 一、中介者模式介绍 在复杂的软件系统中,经常存在大量对象之间相互通信和调用的关系。如果每个对象都直接持有并调用其他多个对象的引用,会形成一个网状耦合结构。这种结构会导致: 系统难以理解和维护: 对象间的依赖关系错综复杂。可复用性差: 对象因为它与其他对象紧密耦合而无法被单独重用。难以扩展: 任何变更 阅读全文
posted @ 2025-08-30 00:19 NeoLshu 阅读(8) 评论(0) 推荐(0)
摘要: 一、迭代器模式介绍 在软件系统中,我们经常需要处理各种集合对象(如列表、树、图等)。这些集合的内部数据结构可能千差万别(数组、链表、哈希表、树),遍历它们的算法也随之不同。 如果客户端代码直接依赖这些集合的具体实现来进行遍历,会产生两个严重问题: 客户端代码与具体集合类高度耦合: 一旦需要更换集合类 阅读全文
posted @ 2025-08-30 00:19 NeoLshu 阅读(23) 评论(0) 推荐(0)
摘要: 一、解释器模式介绍 解释器模式的核心思想是为一种特定的、通常是小型的“语言”或表达式定义一套文法规则,并提供一个解释器来解释执行这些语言中的句子。 这种模式主要用来处理那些有稳定文法规则的、且需要频繁解释执行的场景。它将一个文法表示为一个类层次结构(抽象语法树,AST),并将每一个文法规则映射到一个 阅读全文
posted @ 2025-08-29 13:25 NeoLshu 阅读(10) 评论(0) 推荐(0)
摘要: 一、命令模式介绍 命令模式的核心思想是将请求(或操作)封装为独立的对象。这个对象包含了执行该请求所需的所有信息(接收者、方法、参数)。 通过这种封装,命令的发出者(Invoker)和命令的执行者(Receiver)被彻底解耦。发出者不需要知道执行者是谁、执行了什么操作、以及操作如何实现。它只需要知道 阅读全文
posted @ 2025-08-29 13:24 NeoLshu 阅读(20) 评论(0) 推荐(0)
摘要: 一、责任链模式介绍 责任链模式的核心思想是避免请求的发送者与接收者之间的耦合关系。它允许多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 这种模式模拟了现实世界中的工作流程:例如,一个报销审批流程,可能需要经过项目经理、部门经理、财务总监和CEO的层层 阅读全文
posted @ 2025-08-29 13:22 NeoLshu 阅读(7) 评论(0) 推荐(0)
摘要: 一、代理模式介绍 在某些场景下,客户端直接访问目标对象可能不合适或存在困难。原因可能是:目标对象位于远程服务器上(网络开销大)、目标对象创建开销巨大需要延迟加载、需要控制对目标对象的访问权限、或者需要在访问前后添加额外操作(如日志、监控)。 代理模式正是为解决这些问题而生。它在客户端和目标对象之间引 阅读全文
posted @ 2025-08-29 13:21 NeoLshu 阅读(14) 评论(0) 推荐(0)
摘要: 一、享元模式介绍 在软件系统中,有时需要创建大量细粒度的对象(例如,文档中的每一个字符、棋盘上的每一个棋子、地图上的每一棵树)。如果这些对象除了少数几个参数外其余都相同,那么大量创建它们会导致高昂的内存开销和性能损耗。 享元模式通过区分对象的“内部状态”和“外部状态”来解决这个问题。内部状态是对象中 阅读全文
posted @ 2025-08-29 13:17 NeoLshu 阅读(10) 评论(0) 推荐(0)
摘要: 一、外观模式介绍 在复杂的软件系统中,子系统通常由许多相互关联的类组成,它们各自承担着特定的职责。客户端如果需要直接与这些复杂的子系统交互,不仅需要深入了解子系统的内部细节,还会导致客户端代码与子系统类高度耦合,变得冗长、复杂且难以维护。 外观模式通过引入一个外观类 (Facade) 来解决这个问题 阅读全文
posted @ 2025-08-29 13:14 NeoLshu 阅读(5) 评论(0) 推荐(0)
摘要: 一、装饰器模式介绍 装饰器模式的核心思想是在不改变现有对象结构的情况下,动态地、透明地(对客户端而言)为对象添加新的功能。 当使用继承来扩展功能时,类的行为在编译时就被静态地确定了。如果需要多种功能的组合,就会导致“子类爆炸”问题(例如,一个 Beverage 类,如果有 Milk, Soy, Mo 阅读全文
posted @ 2025-08-29 13:12 NeoLshu 阅读(4) 评论(0) 推荐(0)
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页