Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

介绍

第 1 组:Rust 自带思想

  1. 迭代器模式
  2. 过滤器模式
  3. 原型模式 Clone
  4. 单例模式 OnceLock
  5. 构建者模式

第 2 组:trait 抽象

  1. 策略模式
  2. 工厂模式
  3. 适配器模式
  4. 模板方法模式
  5. 代理模式
  6. 装饰器模式

第 3 组:结构组织

  1. 外观模式
  2. 组合模式
  3. 桥接模式
  4. 享元模式

第 4 组:行为协作

  1. 命令模式
  2. 观察者模式
  3. 责任链模式
  4. 中介者模式

第 5 组:状态与解释

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