「PerlとMooでレポートジェネレーターを作ってみよう」シリーズの目次です。Factory Methodパターンについて学びながら、継承とオーバーライドを活用して、拡張性の高いシステムを作る方法を解説します。
実は作ってきたものが「Factory Methodパターン」でした!GoFデザインパターンの生成パターンを学び、Strategyパターンとの違いも解説します。
全機能を統合してレポートジェネレーターを完成させます。月次・週次・日次・四半期レポートを生成できる、拡張性の高いシステムの全体像をお見せします。
四半期レポートを追加してみましょう。既存コードを一切修正せず、新しいクラスを追加するだけ!開放閉鎖原則(OCP)とSOLID原則の威力を体験します。
create_reportの戻り値が正しいReportRoleを持つことを保証しましょう。Mooのisaで型安全性を高め、バグを未然に防ぎます。
基底クラスに共通処理を集約しましょう。generate_and_saveメソッドで「生成→保存」の流れを統一し、サブクラスは生成処理だけに集中できます。
各ジェネレーターでcreate_reportメソッドをオーバーライドし、適切なレポートオブジェクトを生成します。さらにDailyReportGeneratorも追加して拡張性を確認しましょう。
if/elseの肥大化問題を継承で解決!Mooのextendsを使って、MonthlyReportGeneratorとWeeklyReportGeneratorを作成し、コードを整理します。
レポートに共通のルールを定義しましょう。Moo::Roleのrequiresを使って、すべてのレポートが持つべきメソッドを強制する方法を学びます。
週次レポートも作りたい!でもif/elseで条件分岐すると、コードが肥大化して管理が大変に。この問題をどう解決するか、一緒に考えてみましょう。
月次レポートを生成するReportGeneratorクラスを作成します。Mooを使ったオブジェクト生成の基本を学び、シリーズの土台となるコードを書いていきましょう。
架空ECサイト「ペルマート」の決済審査システムを題材に、Chain of Responsibilityパターンを段階的に学ぶシリーズの目次ページです。Perl 5.36とMooで実装します。
各審査ロジックを独立したMooクラスに分割し、Chain of Responsibilityパターンでチェーン構築。拡張性の高い決済審査システムを完成させます。
決済審査に新ルール追加でif文がネスト化。ブラックリスト、残高確認、不正検知など条件が増えると保守困難に。リファクタリングの必要性を体験します。
Perl 5.36で架空ECサイト「ペルマート」の決済審査を実装します。金額上限チェックと有効期限検証をif文で構築。Moo OOPシリーズ卒業者向けの実践編です。