2013各種Model群についてObject::Containerを応用しつつ管理するとカジュアルにシングルトンになって効率いいかも!って思って、手元の小さなWebアプリで実装してみた。実験的にやってるんで、これおかしいって点あるかもなんでその場合はお手柔らかにツッコんでくだされ。だいたい僕はこんな感じでWebアプリのファイル、クラス構成をとっています。Web.pmうんで、Controllerからはtokuhiromからよく「Catalystっぽいよねー」って言われているけど頑なに$self->model('Entry')のようなインターフェースでModelへアクセスしています。$self->render();}1;呼ばれるはずのMyApp::Model::Entryには呼び出されるはずのメソッドが定義されています。$entries;}1;ここまでは個人的にいいとして、Modelをどのようにロードさせるかって話です。Object::Containerを使った今回の例ではまず、MyApp::Loader::Modelをつくりました。$class;}__PACKAGE__->meta->make_immutable();動的に名前で指定されたModelをロード。生成したModelのインスタンスをinstancesプロパティで保持しています。Object::Cotainerが登場します。このLoaderをシングルトンとして提供出来るようにします。最後にはMojoliciousなMyApp::Webでhelperの定義をします。);...;するとControllerから$self->model('Entry')とかで二度目からはキャッシュされたModelインスタンスが取得出来ます。基本的にMyApp::ModelのgetメソッドからModelを取得することさえ守れば問題ないかな〜。昨日のエントリに引き続きWebアプリの構造と実装をどうするかを考える最近でございます。