介绍
第 1 组:Rust 自带思想
第 2 组:trait 抽象
第 3 组:结构组织
第 4 组:行为协作
第 5 组:状态与解释
| 模式 | 文档中重点回答的问题 | Rust 中重点关注 |
|---|---|---|
| 迭代器模式 | 如何统一遍历和处理一批数据? | Iterator、map、filter、collect |
| 单例模式 | 如何保证某个对象全局只初始化一次? | OnceLock、LazyLock、全局状态风险 |
| 工厂模式 | 如何把对象创建过程从业务逻辑中分离? | 关联函数、new()、Box<dyn Trait> |
| 观察者模式 | 一个对象变化后,如何通知多个对象? | 回调、事件总线、channel |
| 适配器模式 | 接口不兼容时,如何让它们协同工作? | 包装结构体、From、Into、trait 适配 |
| 策略模式 | 多种算法如何灵活切换? | trait、泛型、dyn Trait |
| 外观模式 | 如何给复杂系统提供简单入口? | 模块封装、统一 API |
| 享元模式 | 如何共享大量重复对象,减少内存浪费? | Rc、Arc、缓存池 |
| 代理模式 | 如何控制对对象的访问? | 包装结构体、权限、缓存、日志 |
| 命令模式 | 如何把操作封装成可传递、可保存的对象? | enum 命令、trait 命令、闭包 |
| 原型模式 | 如何通过复制已有对象创建新对象? | Clone、深拷贝与浅拷贝 |
| 组合模式 | 如何统一处理树形结构中的整体和部分? | enum 树、Box、递归结构 |
| 责任链模式 | 请求如何经过多个处理节点? | 处理器链、中间件、pipeline |
| 桥接模式 | 如何把抽象和实现分离,使二者独立变化? | trait 组合、结构体持有实现对象 |
| 装饰器模式 | 如何在不修改原对象的情况下增强功能? | 包装结构体、trait 转发 |
| 构建者模式 | 如何一步步构造复杂对象? | Builder、链式调用、默认值 |
| 过滤器模式 | 如何按照条件筛选对象集合? | filter()、谓词函数、组合过滤条件 |
| 备忘录模式 | 如何保存和恢复对象历史状态? | Clone、快照、状态历史栈 |
| 解释器模式 | 如何定义并执行一套简单语法或表达式? | enum AST、递归求值、match |
| 模板方法模式 | 如何固定算法骨架,允许部分步骤变化? | trait 默认方法 |
| 访问者模式 | 如何在不修改数据结构的情况下增加操作? | Visitor trait 或 enum + match |
| 状态模式 | 对象状态变化后,行为如何变化? | enum 状态机、类型状态模式 |
| 中介者模式 | 多个对象之间如何通过中心协调者通信? | EventBus、channel、协调器结构体 |