🦀
[Rustのデザインパターン学習] 導入
はじめに
-
『Rust Design Patterns』で紹介されている13パターンから、
毎週日曜日に1つずつ学習記録を公開します。Behavioural
(振る舞い)Creational
(生成)Structual
(構造)Foreign function interface
([1])Command Builder Compose Structs Object-Based APIs Interpreter Fold Contain unsafety in small modules Type Consolidation into Wrappers Newtype PreferSmall Crates RAII Guards Strategy Visitor
GoFとの比較
- GoF[2]とRust Design Patternsで紹介されているパターンの差分比較表を記載
- RustDesign Patternは列名”Rust”と記載
- 共通して紹介されているパターンは太字で記載
- Rust DesignPattensのみで紹介されているパターンは
コードスパン
で記載
Behavioural Patterns (振る舞い)
↓ パターン名 / 種別 → | Rust | GoF | Rustのメモ |
---|---|---|---|
Chain of Responsibility | - | 〇 | |
Command | 〇 | 〇 | Zennに投稿した記事@_5da |
Interpreter | 〇 | 〇 | Zennに投稿した記事@_5da |
Mediator | - | 〇 | |
Newtype |
〇 | - | |
Memento | - | 〇 | |
Observer | - | 〇 | |
RAII Guards |
〇 | - | |
State | - | 〇 | Rustlingsのenums3.rsで使用されてました |
Strategy | 〇 | 〇 | Zennに投稿した記事@_5da |
Template Method | - | 〇 | |
Visitor | 〇 | 〇 | Zennに投稿した記事@_5da |
Creational Patterns(生成)
↓ パターン名 / 種別 → | Rust | GoF | Rustのメモ |
---|---|---|---|
Abstract Factory | - | 〇 | |
Builder | 〇 | 〇 | Zennに投稿した記事@_5da |
Factory Method | - | 〇 | |
Fold |
〇 | - | Zennに投稿した記事@_5da |
Prototype | - | 〇 | |
Singleton | - | 〇 |
Structual Patterns(構造)
↓ パターン名 / 種別 → | Rust | GoF | Rustのメモ |
---|---|---|---|
Adapter | - | 〇 | |
Bridge | - | 〇 | |
Compose Structs |
〇 | - | |
Contain unsafety in small modules |
〇 | - | |
Composite | - | 〇 | |
Decorator | - | 〇 | Traitの動的ディスパッチが該当?[3] p94 |
Facade | - | 〇 | |
Flyweight | - | 〇 | |
PreferSmall Crates |
〇 | - | |
Proxy | - | 〇 |
[1:1])
Foreign function interface(GoFでは記載なし
記事の作成方針
- コードにコメントを入れる
- UML図を作成
- Rustの13パターンを投稿し終えたら2周目はそれぞれブラッシュアップする
- 任意のデザインパターンの概要、ねらい等を書く
- 記事投稿始めてから参照、ライフタイム、文字列を十分理解できていないことを痛感しているので同時並行でプログラミングRustを読み込む
- Idiomsページの学習
- Javaで学ぶデザインパターン入門のコードをRustで書き直す
- テストを書く
その他
↑動的に作成するとスマホから見た際レイアウト崩れますね、、
Discussion