Featured image of post これがFactory Methodパターンだ!

これがFactory Methodパターンだ!

シリーズ最終回。これまで作ってきた設計がFactory Methodパターンであることを明かし、GoFの定義と照らし合わせて理解を深めます。

Featured image of post レート制限シナリオを追加しよう

レート制限シナリオを追加しよう

新しいシナリオ「レート制限」を追加します。既存のコードを一切修正せず、新しいクラスを追加するだけで機能拡張できることを体験しましょう。これがオープン・クローズドの原則です。

Featured image of post 共通の送信フローを集約しよう

共通の送信フローを集約しよう

送信処理やログ出力など、全シナリオで共通する処理を基底クラスに集約します。これにより、コードの重複を減らし、一貫性のある動作を保証できます。

Featured image of post 生成処理をオーバーライドしよう

生成処理をオーバーライドしよう

Factory Methodパターンの核心となる「生成処理のオーバーライド」を実装します。各シナリオクラスがそれぞれ専用のResponseを生成する仕組みを詳しく見ていきましょう。

Featured image of post レスポンスの共通ルールを決めよう

レスポンスの共通ルールを決めよう

Moo::Roleを使ってレスポンスクラスに共通のインターフェースを定義します。renderメソッドを必須にすることで、レスポンスの一貫性を保証しましょう。

Featured image of post シナリオ別の生成クラスに分けよう

シナリオ別の生成クラスに分けよう

if/elseの肥大化を解決するため、シナリオごとにクラスを分けます。継承を使って、成功シナリオと失敗シナリオをそれぞれ専用のクラスとして定義しましょう。

Featured image of post エラーも返したい!if/elseの限界

エラーも返したい!if/elseの限界

APIシミュレーターにエラーレスポンスを追加しようとすると、if/elseの条件分岐が急激に増えて管理が難しくなります。この問題を体験しながら、設計改善の必要性を理解しましょう。