🦀

[Rustのデザインパターン学習] 導入

2023/01/01に公開

はじめに

https://rust-unofficial.github.io/patterns/

  • 『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 -

Foreign function interface([1:1])

GoFでは記載なし

記事の作成方針

  • コードにコメントを入れる
  • UML図を作成
  • Rustの13パターンを投稿し終えたら2周目はそれぞれブラッシュアップする
  • 任意のデザインパターンの概要、ねらい等を書く
  • 記事投稿始めてから参照、ライフタイム、文字列を十分理解できていないことを痛感しているので同時並行でプログラミングRustを読み込む
  • Idiomsページの学習
  • Javaで学ぶデザインパターン入門のコードをRustで書き直す
  • テストを書く

その他

↑動的に作成するとスマホから見た際レイアウト崩れますね、、


脚注
  1. 言語間バインディングと呼ばれることがあるとのこと。見慣れない用語なのでわかるまで訳は記載しない wiki ↩︎ ↩︎

  2. オブジェクト指向における再利用のためのデザインパターン ↩︎

  3. ゼロから学ぶRust ↩︎

Discussion