@kyanny's blog

My life. Opinions are my own.

9.ドメインロジックパターン

この本最初の面白いところに差し掛かった感がある。けっこうわかりやすくて納得感もある。

トランザクションスクリプト

でっかい .cgi ファイルというイメージ。ウェブでいうとリクエストの解析からデータベース接続、データ処理してビューを組み立ててレスポンスを返し終わるまでが全部一枚のスクリプトに書いてあって頭から順番に実行される。サブルーチン単位での分割くらいはやっている。

ドメインモデル

この本で紹介されてるパターンのなかでも一番くらいに重要なやつなんだろうという気がしたので気合を入れて読んだ。けどとても抽象的な感じでおれが知ってる具体的な実装に置き換えるのに苦労した(というかまだ完全には把握しきれてない気がする)具体的な実装に置き換えて理解しようとする姿勢が正しいのかどうかは自信がない・・・。

シンプルなドメインモデルではアクティブレコードを使い、複雑なドメインモデルではデータマッパーを使う。つまりオブジェクトリレーショナルマッピングのパターンとは直接関係しない概念。要するにごくごく一般的なオブジェクト思考でシステムをモデル化するパターンという風に理解した(名詞がオブジェクトで動詞がメソッドで、みたいな浅い理解)

テーブルモジュール

これがどうもすんなり頭に入ってこない。なんかアクティブレコードなり、 O/R マッパそのもののようにみえてしまう(けどレイヤが違うのでそうではないはず)ただ具体的な実装と、サンプルコードは簡単に脳内に浮かべられた。 update(object_id) 的なインタフェースをとるものなので明確にアクティブレコードではない(クラスのインスタンスは一意なレコードと結びついていない)

サービスレイヤ

この章は文章がわかりづらすぎる。例えば ドメインファサード手法では、サービスレイヤはドメインモデル上の薄いファサードのセットとして実装される。 日本語でおk、と叫んで本を投げ出したくなる。要するにドメインモデルはなるべく抽象度の高い実装に保っておき、アプリケーション固有の事情はそれより「外側の世界」に近い層を作ってそっちに実装したほうが良い設計になりますよ、という話だと理解した。