今日はRuby on RailsとHibernateを触りながら、PoEAAのActive RecordとData Mapperのところを読み返して色々考えてみた。その中での思いつきなのだけれど、インスタンスのライフサイクルというのは横断的関心として捉えることもできそうだよね。
- スコープレベル
- トランザクションレベル
- セッションレベル
- プロセスレベル
- プロセスレベルシングルトン
- マシンレベルシングルトン
- ネットワークレベルシングルトン
- 永続的
- その他諸々。
もうちょっと洗練させたら何か役に立つ気もするぞ。Seasar2でコンポーネントのinstance属性をrequestレベルやsessionレベルに設定するっていうのはこれに近い気がする。
インスタンスが具体的にどこから来てどこへ行くのかっていうのはビジネスロジックと直結はしない場合が多いから、だからその辺を抽象化してフレームワークに追い出したり、ActiveRecordで透過的にしたりするわけだけれど。モデルと直接関係ないなら本当に横断的関心事として追い出してしまって世域がする。Curlでインスタンスの生成サイクルにユーザーが介入できる仕組みがあったと思うけれど、ああいうのを使ったり、RubyでClass#newをオーバーライドしてしまったり。
うーん。まだ思いつきレベルだ。
コメント