• 本文试图解释 Rust 如何偏离面向对象编程范式的原则以及为什么这是一件好事? Rust不是一种面向对象的编程语言。 Rust可能看起来像一种面向对象的编程语言:类型可以与 "方法 "相关联,要么
  • 观察者是一种行为设计模式,它允许一些对象通知其他对象其状态的变化。 在 Rust中,定义订阅者的一种便捷方法是将函数 作为可调用对象,并通过复杂的逻辑将其传递给事件发布者。 首先看看一个直观天真
  • 责任链是一种行为设计模式,它允许沿着潜在处理程序链传递请求,直到其中一个处理请求。 责任链也称为职责链,功能链或过滤器模式,当有很多过滤器,无法依附于原有被过滤的对象,可以独立出来成为独立通用的一个大的过滤器集合时,就从decorator模式转为责 icon
  • 零成本抽象:在不牺牲富有表现力的代码设计的情况下优化软件效率。 什么是零成本抽象?Rust 以注重性能和安全性而闻名,它引入了其设计理念中一个至关重要的概念:零成本抽象。这一原则允许开发人员使用trait特征和泛型 icon
  • 物品可以展示,可以下订单购买,提供购买详细信息以验证订单,最后,物品被运送。发货前可以取消订单。下面示意性地描述了该状态机: icon
  • 模板方法是一种行为设计模式,它允许您在基类中定义算法的骨架,并让子类覆盖这些步骤而不改变整体算法的结构。模板方法是定义算法骨架的默认实现,其他方法可以在具体类型中重新定义。 这里算法整体结构不只是指普通算法 icon
  • 策略将一组动作行为转化为对象(动词变名词),并使它们在原始上下文对象中可互换。 Rust实现创建一个表示公共接口的trait并多次实现该trait: icon
  • 状态模式与有限状态机 (FSM) 概念相关,但是,每个状态都由实现公共状态特征的单独类型表示,而不是实现大量条件语句。状态之间的转换取决于每种状态类型的特定 trait 实现。Rust 中的状态模式在Rust Book中有详细描述:  icon
  • 代理是一种结构设计模式,它提供一个对象来替代客户端使用的真实服务对象。代理接收客户端请求,执行一些工作(访问控制、缓存等),然后将请求传递给服务对象。 例如诸如 Nginx 之类的 Web 服务器 icon
  • 解释器模式是  一种设计模式,它指定如何评估语言中的句子。解释器模式描述了如何为简单语言定义语法。 如果一个问题经常发生并且需要很长的重复步骤来解决它,那么问题实例可能会用一种简单的语言来表达,并且解释器对象可以通过解释用这种简单语言编写的句子来解 icon
  • Visitor允许您将“外部”操作添加到整个类层次结构中,而无需更改这些类的现有代码。 访问者另外一个定义是:封装了一种对异构对象集合进行操作的算法。它允许在同一数据上写入多个不同的算法,而无需修改数据(或其主要行为)。 icon
  • 这个模式背后的想法非常简单:创建一个可以但不需要持有所有值的对象,当所有需要的字段都存在时,用它来构建我们需要的类型。 为了熟悉Rust中的构建器模式,让我们首先比较一下我们的代码在有和没有构建器的情况下会是什么样子: icon
  • 命令是将请求或简单操作转换为对象的行为设计模式。 首先看看stackoverflow上一个朴素天真的 icon
  • 中介者Mediator模式在Rust在实现很难,因为其他语言中的典型 Mediator 实现是 Rust 中的经典反模式:许多对象相互持有可变的交叉引用,试图相互变异,这在 Rust 中是一个致命的罪过——编译器不会通过你的第一个天真实施,除非它过于简单化。 icon
  • 迭代器是一种行为设计模式,它允许顺序遍历复杂的数据结构而不暴露其内部细节。 标准迭代器迭代器在Rust惯用语中被大量使用: icon
  • Memento允许制作对象状态的快照并能在以后恢复这些状态。 icon
  • 在 Rust 中创建自定义数据类型有两种方法:结构和枚举。与结构相比,枚举构造一个具有多个变种、变体而不是多个字段的类型。 虽然结构是几乎所有编程语言的一部分,但枚举并不是那么主流,并且主要出现在 Haskell 或 OCaml 等静态类型 icon
  • Newtype 是 Rust 中类型驱动设计的原始要素,这使得无效数据几乎不可能进入您的系统。 什么是Newtype?在 Rust 中,newtype 是一种设计模式,它涉及通过将现有类型包装在具有单个字段的元组结 icon