- chipstar_light
- 1295
- 0
- 0
- 0
皆さんも是非「DI トランザクションスクリプト」とか「トランザクションスクリプトvsドメインロジック」でググッてみて。 RT @chipstar_light: 「DIコンテナがTSとドメインモデルのどちらに向いてるのか」って議論が活発に行われていた事実を今日の輪読で知った。
2010-05-14 22:51:58@mtoyoshij 俺はDIコンテナを、オブジェクトの振る舞いを切り替える標準的なインターフェースという理解ぐらいしかしてなくて、大規模開発体制下におけるドメインロジックレイヤに適用する場合はみたいな考えをあまりしてなかったな。
2010-05-14 10:03:33@mtoyoshij ただ、「DIコンテナがTSとドメインモデルのどちらに向いてるのか」って議論が活発に行われていた事実を今日の輪読で知った。今ググってみても一杯出てくる。それを見て、ドメインモデルでも利用できなくないけど、TSに利用しやすい仕組みだって事はわかった。なるほどー。
2010-05-14 09:57:27「生成できるのはステートレスオブジェクトだけ」というのはあってると思う。生成後にステートフルにする事はもちろんできるけど。 RT @mtoyoshij:...
2010-05-14 09:51:15もちろん、ステートフルでもいい。俺の前提はDIが生成できるのはステートレスオブジェクトだけという制約があるという理解なんだけど、もしかして違う!?それならかなり嬉しい RT @chipstar_light: 俺は別にDIで生成されるオブジェクトがステートフルでもいい気がするけど。
2010-05-14 08:03:07#EAA9_1 (P122)最後の3行がポイントと思った。もっと複雑になったらサービスのロジックが膨らむだけだから設計が破綻していくと。
2010-05-14 06:11:00#EAA9_1 (P117)TSの長所はシンプルさ。ただ複雑なロジックになるとTSでは限界があるから、ドメインモデルの構築を検討する。
2010-05-14 06:10:08#EAA9_1 (P116)スクリプトを複数にする方法は単純に1つのクラスに処理を纏める場合と、呼び出し方法を統一する為にコマンドパターンにする場合。
2010-05-14 06:09:59#EAA9_1 (P116)まずはスクリプトのコード化はそのままやればいい。問題はスクリプトをどこに置くかという事。
2010-05-14 06:09:48#EAA9_1 このパターンは、1つのトランザクション(ドメインロジック+SQL)に着目して、手続き型で処理をごりごり書くかんじでいいのかな?
2010-05-14 02:40:25#EAA9_1 確かに差し替えたい部分は振る舞いだけど、ドメインモデルでもモデルの振る舞いをかえるためにDIを使うっていうのは妥当な気がするんやけど、どうなんでしょう。
2010-05-14 01:31:00そうなんかな?俺は別にDIで生成されるオブジェクトがステートフルでもいい気がするけど。 RT @mtoyoshij: #EA9_1 DIから生成できるオブジェクトはステートレスで、それゆえに生成されるオブジェクトの種類はロジッククラスとなる。
2010-05-14 01:28:26#EAA9_1 まぁここで言いたいのは命令をコマンド化する事よりは、スクリプトを定型的なインターフェースで体系化する事が目的のようだけど。
2010-05-14 01:24:57バッチプログラムなど、リランが必要なドメインロジックならコマンドパターンがいいのでは? RT @XY_kyo: #EAA9_1 「トランザクションスクリプトを複数のクラスに体系化する方法は2つある」の中の「コマンドパターン」って使われるのはどういうケースかなぁ…
2010-05-14 01:20:10#EAA9_1 うちの会社の開発は、TSでドメインロジックを組んでるね。ドメインモデルで組んでるSIを見た事が無い。手続き型に近いからかな。目の前の実現したい処理を中心に考える傾向があるので。
2010-05-14 00:59:43確かにそうだ。 RT @mtoyoshij: #EAA9_1 ロジック抽出の主眼をどこにおくかというのがポイントやね。トランザクションスクリプト(以下、長いのでTS)は処理に主眼をおくパターンやね。ゆえに、とっつきやすい。
2010-05-14 00:52:13#EAA9_1しかしこのトランザクションスクリプトパターンをパターンとして認識するという発想は正直なかった。パターンに関しては勉強不足を露呈。
2010-05-14 00:46:42#EAA9_1@XY_kyoコマンドパターンを適用してもうまく解決するのは難しそうな気がする。所詮メインプログラム的なので小規模な場合のみ適用かな。
2010-05-14 00:39:35