ひがやすを技術ブログ

電通国際情報サービスのプログラマ

TransactionScriptとStateless BusinessLogic

http://d.hatena.ne.jp/koichik/20041022#1098468196
を読んで再度整理。
PofEAAでは、リッチなSQLかどうかは関係無いとのこと。
FowlerのいっているTransactionScriptは、(たぶん)従来の手続き型ですね。こういちさんのいっている通り、monolithicなイメージなんじゃないかと思います。
くーすでは、役割に応じて、クラスは分かれます。

  • 業務固有のクラス
  • データアクセス用のクラス
  • 複数の業務から共通に使われるクラス

リッチなSQLの話を除けば、どのロジックがどこにあるのかが明確で、ロジックが重複することはありません。
また、Statelessであるということも重要です。
詳しくは、http://d.hatena.ne.jp/higayasuo/20040805#1091664617で書いたのですが、Statelessであるならば、メソッド間の依存関係を0にできるので、どんな複雑なロジックでも、単純なロジックになるまで、分解すれば、単純になったロジックをテストするだけでOKになるのです。
複雑であればあるほど、Domain ModelよりStateless BusinessLogicのほうが有利だと思います。
というわけで、TransactionScriptとくーすは違うと思います。
2chでもでてましたけど、こういう話をみんなで議論しあえるというのは、いいですね。