<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>01-行为型 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/</link><description>Recent content in 01-行为型 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 21 Aug 2026 22:34:20 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/index.xml" rel="self" type="application/rss+xml"/><item><title>01-命令</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/01-command/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/01-command/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/command.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/command.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="命令"&gt;命令&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;命令模式的基本思想是把操作分离成独立的对象，并把它们作为参数传递。&lt;/p&gt;
&lt;h2 id="motivation"&gt;动机&lt;/h2&gt;
&lt;p&gt;假设我们有一系列封装为对象的操作或事务。我们希望这些操作或命令稍后在不同时间、按某种顺序执行或调用。这些命令也可能由某些事件触发。例如，用户按下按钮，或数据包到达。此外，这些命令可能是可撤销的。这对编辑器一类的操作很有用。我们可能还想存储已执行命令的日志，以便系统崩溃后重新应用这些更改。&lt;/p&gt;</description></item><item><title>02-解释器</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/02-interpreter/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/02-interpreter/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/interpreter.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/interpreter.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="解释器"&gt;解释器&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;如果某个问题经常出现，并且解决它需要冗长而重复的步骤，那么可以把问题实例表达为一种简单语言，再由解释器对象通过解释用该简单语言写成的句子来求解。&lt;/p&gt;</description></item><item><title>03-Newtype</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/03-newtype/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/03-newtype/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/newtype.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/newtype.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="newtype"&gt;Newtype&lt;/h1&gt;
&lt;p&gt;有时我们希望某个类型的行为类似于另一种类型，或在仅用类型别名不够时于编译期强制某些行为，该怎么办？&lt;/p&gt;
&lt;p&gt;例如，出于安全考虑（如密码），我们想为 &lt;code&gt;String&lt;/code&gt; 提供自定义的 &lt;code&gt;Display&lt;/code&gt; 实现。&lt;/p&gt;</description></item><item><title>04-RAII 守卫</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/04-raii-guards/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/04-raii-guards/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/RAII.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/RAII.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="raii-守卫"&gt;RAII 守卫&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization"&gt;RAII&lt;/a&gt; 代表 “Resource Acquisition is Initialisation”（资源获取即初始化），这是个糟糕的名字。该模式的本质是：资源初始化在对象的构造器中完成，收尾在析构器中完成。在 Rust 中，该模式被扩展为：用 RAII 对象作为某种资源的守卫，并依赖类型系统确保访问始终经由守卫对象中介。&lt;/p&gt;</description></item><item><title>05-策略</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/05-strategy/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/05-strategy/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/strategy.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/strategy.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="策略"&gt;策略&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Strategy_pattern"&gt;策略设计模式&lt;/a&gt; 是一种实现关注点分离的技术。它还可以通过
&lt;a href="https://en.wikipedia.org/wiki/Dependency_inversion_principle"&gt;依赖倒置&lt;/a&gt; 解耦软件模块。&lt;/p&gt;
&lt;p&gt;策略模式的基本思想是：给定一个求解特定问题的算法，我们只在抽象层面定义算法骨架，并把具体算法实现分离到不同部分。&lt;/p&gt;</description></item><item><title>06-访问者</title><link>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/06-visitor/</link><pubDate>Tue, 18 Aug 2026 22:10:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustDesignPatterns/design-patterns/01-behavioural/06-visitor/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-unofficial.github.io/patterns/"&gt;Rust Design Patterns&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-unofficial.github.io/patterns/patterns/behavioural/visitor.html"&gt;https://rust-unofficial.github.io/patterns/patterns/behavioural/visitor.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="访问者"&gt;访问者&lt;/h1&gt;
&lt;h2 id="description"&gt;描述&lt;/h2&gt;
&lt;p&gt;访问者封装了在异构对象集合上运行的算法。它允许在同一份数据上编写多种不同算法，而无需修改数据（或其主要行为）。&lt;/p&gt;
&lt;p&gt;此外，访问者模式允许把对象集合的遍历与对每个对象执行的操作分离开。&lt;/p&gt;</description></item></channel></rss>