PerlとMooで航空管制シミュレーターを作りながら、Mediatorパターン(仲介者パターン)を学ぶシリーズ全8回の目次です。
作ってきたものがGoFの「Mediatorパターン」だったと明かします。パターンの構造と他の応用例を解説。
燃料切れなど緊急事態の航空機を優先する機能を追加。優先度付きキューで緊急処理を実装します。
複数機が着陸待ちの場合、順番に処理するキュー機能を追加。先着順で公平に処理します。
滑走路の排他制御を実装。1つの滑走路に同時に1機しか使えないリソース管理の仕組みを作ります。
全航空機クラスに共通のインターフェースをMoo::Roleで定義。Aircraft::Roleを作成し、統一的な操作を実現します。
管制塔(ControlTower)クラスを導入し、航空機同士が直接通信せずに安全に着陸できる設計に変更します。
2機の航空機が同時に着陸を要求すると衝突の危険が!オブジェクト間の直接参照が引き起こす問題を体験します。
PerlとMooを使って航空機シミュレーターを作成します。まずは飛行機を飛ばす基本的なクラスから始めましょう。
PerlとMooでTRPGのダイス記法を解釈するインタプリタを作るシリーズの目次です。Interpreterパターンを実践的に学びます。
作ってきた設計がInterpreterパターンだったことを明かします。GoFパターンとの対応表と、他のパターンとの関係を解説します。
文字列「2d6+3」から式ツリーを自動構築するパーサーを実装し、ダイス言語インタプリタを完成させます。
引き算(SubExpr)と掛け算(MulExpr)を追加します。既存コードを変更せずに機能を拡張する「開放閉鎖の原則」を実践します。
すべての式クラスにevalメソッドを必須にするExpressionRoleを定義し、Moo::Roleでインターフェースを統一します。
「+」を表すAddExprクラスを作成します。左辺と右辺のExpressionを持ち、再帰的に評価する「非終端式」の概念を学びます。