# DesginPatternRust **Repository Path**: why100/desgin-pattern-rust ## Basic Information - **Project Name**: DesginPatternRust - **Description**: This Reop is created for leaning design pattern with Rust. - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DesginPatternRust This Reop is created for leaning design pattern with Rust. # 23种GoF设计模式(按类型分类) ## 一、创建型模式(5种) 聚焦「对象的创建过程」,解耦对象创建与使用,提升灵活性。 | 模式名称 | 极简解释 | Rust中常用性 | |----------|----------|--------------| | 单例模式(Singleton) | 保证一个类只有一个实例,并提供全局访问点 | ✅ 高频(如`CarrierConfig`单例) | | 工厂方法模式(Factory Method) | 定义创建对象的接口,让子类决定实例化哪个类 | ✅ 高频(替代直接`new`,适配trait抽象) | | 抽象工厂模式(Abstract Factory) | 提供一个创建一系列相关/依赖对象的接口,无需指定具体类 | ✅ 中高频(多产品族场景) | | 建造者模式(Builder) | 分步构建复杂对象,控制构建过程 | ✅ 高频(Rust API设计最佳实践) | | 原型模式(Prototype) | 通过复制现有对象创建新对象,避免重复初始化 | ⚠️ 低频(`Clone` trait天然支持) | ## 二、结构型模式(7种) 聚焦「类/对象的组合方式」,优化结构复用与扩展。 | 模式名称 | 极简解释 | Rust中常用性 | |----------|----------|--------------| | 适配器模式(Adapter) | 将一个类的接口转换成客户期望的另一个接口 | ✅ 高频(适配不同trait、第三方库接口) | | 装饰器模式(Decorator) | 动态给对象添加额外职责,替代继承 | ✅ 高频(trait组合、包装类型适配) | | 代理模式(Proxy) | 为其他对象提供一种代理以控制对它的访问 | ✅ 中高频(懒加载、权限控制) | | 外观模式(Facade) | 为复杂子系统提供统一的简化接口 | ✅ 高频(封装复杂逻辑,暴露简洁API) | | 桥接模式(Bridge) | 将抽象与实现分离,使二者可独立变化 | ✅ 中高频(trait+结构体分离设计) | | 组合模式(Composite) | 将对象组合成树形结构,统一处理单个/组合对象 | ✅ 中高频(文件系统、UI组件树) | | 享元模式(Flyweight) | 复用大量细粒度对象,减少内存占用 | ⚠️ 低频(Rust内存管理高效,场景少) | ## 三、行为型模式(11种) 聚焦「对象间的交互与职责分配」,提升协作灵活性。 | 模式名称 | 极简解释 | Rust中常用性 | |----------|----------|--------------| | 观察者模式(Observer) | 一对多依赖,状态变化时通知所有依赖者 | ✅ 高频(发布-订阅模型) | | 策略模式(Strategy) | 定义一系列算法,封装并使它们可互换 | ✅ 高频(trait+不同实现适配) | | 命令模式(Command) | 将请求封装为对象,可参数化、队列化请求 | ✅ 中高频(任务队列、撤销/重做) | | 迭代器模式(Iterator) | 顺序访问集合元素,无需暴露内部结构 | ✅ 高频(`Iterator` trait是核心特性) | | 模板方法模式(Template Method) | 定义算法骨架,步骤延迟到子类实现 | ✅ 中高频(trait默认方法+具体实现) | | 责任链模式(Chain of Responsibility) | 多个对象依次处理请求,解耦发送者与接收者 | ✅ 中高频(日志分级、请求过滤) | | 状态模式(State) | 状态变化时改变行为,替代大量`if-else` | ✅ 中高频(枚举+trait状态管理) | | 访问者模式(Visitor) | 封装作用于对象结构的操作,扩展新操作 | ⚠️ 低频(所有权模型增加复杂度) | | 中介者模式(Mediator) | 中介对象封装交互,减少直接耦合 | ✅ 中高频(组件通信、事件总线) | | 备忘录模式(Memento) | 捕获并存储对象状态,可恢复状态 | ⚠️ 低频(不可变数据更倾向直接复制) | | 解释器模式(Interpreter) | 定义语言文法,构建解释器解释句子 | ⚠️ 低频(仅自定义小型语言场景) |