Factory Methodパターンの核心となる「生成処理のオーバーライド」を実装します。各シナリオクラスがそれぞれ専用のResponseを生成する仕組みを詳しく見ていきましょう。
Moo::Roleを使ってレスポンスクラスに共通のインターフェースを定義します。renderメソッドを必須にすることで、レスポンスの一貫性を保証しましょう。
if/elseの肥大化を解決するため、シナリオごとにクラスを分けます。継承を使って、成功シナリオと失敗シナリオをそれぞれ専用のクラスとして定義しましょう。
APIシミュレーターにエラーレスポンスを追加しようとすると、if/elseの条件分岐が急激に増えて管理が難しくなります。この問題を体験しながら、設計改善の必要性を理解しましょう。
PerlとMooを使って、シンプルなAPIレスポンスシミュレーターを作り始めます。まずは成功レスポンスを返すだけのミニAPIを構築し、オブジェクト指向の基本を復習しましょう。
PerlとMooで「既存オブジェクトをコピーして新しいオブジェクトを作る」Prototypeパターンを学ぶ全6回シリーズ。MooX::CloneからStorable::dclone()まで実践的に解説。
実は作ってきたものが「Prototypeパターン」でした!GoFデザインパターンの生成パターンを学び、Factory Methodとの違いも解説します。
Storable::dclone()を使って「深いコピー」を実装。ネストしたオブジェクトも完全に独立したコピーになり、浅いコピーの問題を解決!
装備(武器オブジェクト)を持つドラゴンをclone()したら、武器を変更すると元のドラゴンにも影響が!Perlで陥りがちな「浅いコピー(Shallow Copy)」の罠を解説します。
clone()したモンスターの色だけ変えて、赤スライム・青スライム・金スライムを量産!テンプレートからバリエーションを作る楽しさを味わおう。
MooX::Cloneを導入してclone()メソッドを追加!ベースモンスターを1体作れば、あとはclone()で量産し放題。コードが劇的に短くなる魔法を体験しよう。
スライムを10体作りたい!でもnew()で毎回全属性を指定するのは面倒すぎる。もっと効率的にモンスターを量産する方法はないの?
Mooを使ってローグライクゲームの通知システムを作りながら、Observerパターンを自然に学ぶ全10回のシリーズ目次です。
作ってきた設計が「Observerパターン」だったことを明かします!Pub/SubやMediatorとの違いも解説し、デザインパターンの世界へ誘います。
全機能を統合してローグライク通知システムを完成!対話的なCLIでダンジョン探索を体験。実績、サウンド、統計が連動する様子を確認。