PoEAA 9.2章

PoEAA輪読
0
mtoyoshi @mtoyoshij
ここは説明する自信ナッシング。誰かに期待。 P125 RT @ryamari: #EAA9_2 再入可能な振る舞いとは、オブジェクト間の相互関連という認識であってますか
mtoyoshi @mtoyoshij
俺の考えでは、基本はドメインモデル。経験が浅い人たちが多くクラス抽出すらまともに出来ないような場合に限りトランザクションスクリプト。 RT @XY_kyo: #EAA9_2 ドメインモデルは複雑な処理に、トランザクションスクリプトはシンプルな処理に適用と考えて良い?
mtoyoshi @mtoyoshij
No!今回の例の場合、ここが本質的に複雑な部分だし今後も変更が入る可能性、商品が増えていく可能性が目に見えているためOCPに基づいてStrategyを適用しただけ。ifを悪とするとプログラム大変杉デス RT @ryamari: #EAA9_2 ドメインモデルでは条件分岐は絶対悪
ricymst @ricymst
#EAA9_2 ドメインモデルでは、条件分岐は絶対悪という感じかな
ricymst @ricymst
#EAA9_2 オブジェクトからオブジェクトへと連続的に連携するオブジェクト指向の修正により、振る舞いは処理に最も適しているオブジェクトへと移動する。確かに。これがきっちりできたときは、とても爽快でアーキテクチャがかちっとまとまった感じがして芸術的に感じる。
ricymst @ricymst
#EAA9_2 ドメインモデルでの共通事項は、複数のクラスがもっともシンプルなタスクでも相互に作用する
ricymst @ricymst
#EAA9_2 優れたドメインモデルを構築するには、概念的な考え方を理解する必要がある。
ricymst @ricymst
#EAA9_2 ドメインモデルを利用する場合、データベースマッパーを利用すると、ドメインモデルがデータベースに依存していない状態を維持できる。これは、とりあえずデータベースアクセスはドメインオブジェクトから隠してしてしまうということか
ricymst @ricymst
#EAA9_2 再入可能な振る舞いとは、オブジェクト間の相互関連という認識であってますか
ricymst @ricymst
#EAA9_2 CMPはオブジェクトリレーショナルマッピングが制限された形態であり、豊富なドメインモデルで必要なパターンの多くはサポートできない。ここでいうCMPとは、DIやO/RマッピングFMを指している?CMPが調べれてない
ricymst @ricymst
#EAA9_2 Strategy パターンは、アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある際に有用である。あーそういういみか。よくつかってる
ricymst @ricymst
#EAA9_2 ハッシュコードを忘れてました。すんません
ricymst @ricymst
#EAA9_2 責任の明確化をするにあたって、責任の範疇にない振る舞いは目に付きにくく、重複させてしまう懸念がある。これは、複雑性を増すだけでなく、一貫性も失う。
ricymst @ricymst
#EAA9_2 ドメインオブジェクトの拡大には気をつけ、ドメインオブジェクトの責任を明確化する。責任の範疇にない場合、責任を特定用向けのクラス(トランザクションスクリプトまたはプレゼンテーション)に分ける ⇒ファウラーさんは否定している
ricymst @ricymst
#EAA9_2 レイヤを簡単に修正、構築、テストを行うためには、ドメインモデルと他のレイヤとの結合は最小限に抑える
ricymst @ricymst
#EAA9_2 シンプルなドメインモデルはアクティブレコードを使用する 複雑なドメインモデルはデータマッパーを使用する
ricymst @ricymst
#EAA9_2 ドメインモデルは、相互に関連するオブジェクトが絡み合った関係を作成する。ドメインの切り口は幅広いが、役割や責任が明確された個体をドメインと考える。
Takuya Kitamura @chipstar_light
@XY_kyo TSは従来の手続き型に近い部分があるのでなじみやすい。でもオブジェクト指向の本質は、データと振る舞いを一体化させて管理することだから。ドメインモデルはその本質を生かすこと。
Takuya Kitamura @chipstar_light
そういう使い分けもある。でも、シンプルなものでもドメインモデルで考える方が個人的にはいいと思う。 RT @XY_kyo: #EAA9_2 ドメインモデルは複雑な処理に、トランザクションスクリプトはシンプルな処理に適用と考えて良い?
kyoinn3 @XY_kyo
#EAA9_2  ドメインに着目して、ロジックを考えカラスに分けていくのはこのモデルで言いたかったことかな。
kyoinn3 @XY_kyo
#EAA9_2 ドメインモデルは複雑な処理に、トランザクションスクリプトはシンプルな処理に適用と考えて良い?
mtoyoshi @mtoyoshij
@izumin8080 ・・・と書いたけど、ドメインモデルの場合はやっぱ全部でドメインモデルと呼ぶべきですね。失礼。 #EAA9_2
mtoyoshi @mtoyoshij
@izumin8080 (続き)で、Strategyパターン使うのはOCPに基づいたオブジェクト指向プログラミング。トランザクションスクリプトでもStrategyパターン使えるからね。 #EAA9_2
Takuya Kitamura @chipstar_light
オブジェクト指向を正確に利用しようとするとドメインモデルの考え方になるんじゃないかな。逆にドメインモデルでロジックを実現する方法論としてオブジェクト指向言語がうまれたみたいな。 RT @izumin8080: #EAA9_2 単純にオブジェクト指向な設計という理解ではダメ?
mtoyoshi @mtoyoshij
@izumin8080 処理じゃなくてドメインに着目してモデリングした結果、Contract・Product・RevenueRecognitionを抽出できる。製品ごとに処理が違うのでProductにメソッド配置。ここまでが「ドメインモデル」。(続く) #EAA9_2
残りを読む(23)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする