Java EE勉強会
MenuBar
編集
添付
凍結
新規
最終更新
一覧
単語検索
DDD
/
SPECIFICATION
Menu
Top
JavaEE勉強会
参加するには
FAQ
MakingSenseofStreamProcessing
MicroservicesVsSOA
ModernJavaEEDesignPatterns
BSA
EIP
DSL
DDD
議事録
最新の20件
2023-11-24
MicroservicesVsSOA/The World of Service-Based Architectures
2020-11-14
DDD/Knowledge-Rich Design
MakingSenseofStreamProcessing/Example Implementing Twitter
2020-10-28
EIP/Aggregator
2019-12-18
EIP/Publish-Subscribe Channel
2018-06-10
FrontPage
2017-07-08
MakingSenseofStreamProcessing/Materialized Views Self-Updating Caches
MakingSenseofStreamProcessing/Summary Four Database-Related Ideas
MakingSenseofStreamProcessing/The Unbundled Database
MakingSenseofStreamProcessing/Conclusion
MakingSenseofStreamProcessing/Streaming All the Way to the User Interface
MakingSenseofStreamProcessing/4. Materialized Views
2017-06-11
MakingSenseofStreamProcessing/1. Replication
MakingSenseofStreamProcessing/Bringing the Unix Philosophy to the Twenty-First Century
MakingSenseofStreamProcessing/2. Secondary Indexes
MakingSenseofStreamProcessing/3. Caching
MakingSenseofStreamProcessing/How Databases Are Used
MakingSenseofStreamProcessing/Composability Requires a Uniform Interface
2017-03-25
MakingSenseofStreamProcessing/Unix Architecture versus Database Architecture
MakingSenseofStreamProcessing/Turning the Database Inside Out
SPECIFICATION (P224〜P227)
†
要約
†
[文脈の説明]
どんなアプリケーションでも、Boolean を返すだけの簡単な検査メソッドがある。例えば Invoice クラスの isOverdue() 。
public boolean isOverdue() { Date currentDate = new Date(); return currentDate.after(dueDate); }
しかし、全てが簡単なわけではない
[問題についての説明]
大抵、Invoiceクラスを肥大化させないようにしようと試み、ルールをアプリケーション層に書こうとする。
ルールはドメイン層に在るべきだが、Invoiceには収まらない上に、条件分岐で肥大化したメソッドになってしまう。
論理プログラミングであればルールを述語で明快に表すことができるが、論理パラダイムの中だけの話。
オブジェクトでも論理的なルールの実装が試みられたが、明確なのは、考えは魅力的でも完全な実装は大仕事だということ。
問題サマリ
ビジネスルールはENTITIESやVALUE OBJECTSのどれかの責務とは限らず、その種類と組み合わせは、ドメインオブジェクトの基本的な意味合いを飲み込むことができるが、ドメイン層からルールを出してしまうのは、ドメインコードがモデルを表さなくなるので良くない。(P225-2)
論理プログラムは”述語”の組み合わせでルールを書けるが、オブジェクトで実装するのは厄介というのは一般的。(P225-3)
[問題の解決方法についての説明]
幸い、論理プログラムで完全に実装する必要はなく、述語の概念を借りて、Booleanに評価するだけのオブジェクトを作ることができる。
新しいオブジェクト(SPECIFICATION)は別のオブジェクトの状態に規制かける。
複数の用途があるが、基本概念はどんなオブジェクトでも検査できるということ。
解決方法サマリ
ある目的に特化した述語ライクなVALUE OBJECTSを作成する。
SPECIFICATIONは、オブジェクトがいくつかの評価基準を満たすか満たさないかを決定する述語である。
多くのSPECIFICATIONSはシンプルで特化した検査で、複雑な場合は、シンプルなSPECIFICATIONを結合する。(→次の章で)
SPECIFICATIONはドメイン層の中で規則を守る。
規則が完全なオブジェクトなので、デザインはモデルの、より明白な反映かもしれない。
FACTORYでSPECIFICATIONを構成する。
***
SPECIFICATIONの基本概念は非常に簡単なので、ドメインモデルの問題について考えるのを助るが、MODEL-DRIVEN DESIGNは概念を言い表す有効な実装を必要とするので、パターンがどう適用されるか少し深く掘り起こさないとならない。ドメインパターンはUMLの為だけでなく、MDEL-DRIVEN DESIGNのプログラミング問題を解決する。(227-1)
適切にパターンを適用すれば、ドメインモデル問題への対処の仕方を身につけ、有効な実装を見つける何年分もの経験を得られる。パターンは料理の本ではなく、経験のベースから解決策を見いだし始めることをうながし、共通言語を与えるもの。(227-2)
重要なところだけざっくり知りたいかもしれないが、きちんと論議しておくと後で楽。(227-3)
担当者のつぶやき
†
みんなの突っ込み
†
まとめ (
議事録
)
†
Menu
Top
JavaEE勉強会
参加するには
FAQ
MakingSenseofStreamProcessing
MicroservicesVsSOA
ModernJavaEEDesignPatterns
BSA
EIP
DSL
DDD
議事録
最新の20件
2023-11-24
MicroservicesVsSOA/The World of Service-Based Architectures
2020-11-14
DDD/Knowledge-Rich Design
MakingSenseofStreamProcessing/Example Implementing Twitter
2020-10-28
EIP/Aggregator
2019-12-18
EIP/Publish-Subscribe Channel
2018-06-10
FrontPage
2017-07-08
MakingSenseofStreamProcessing/Materialized Views Self-Updating Caches
MakingSenseofStreamProcessing/Summary Four Database-Related Ideas
MakingSenseofStreamProcessing/The Unbundled Database
MakingSenseofStreamProcessing/Conclusion
MakingSenseofStreamProcessing/Streaming All the Way to the User Interface
MakingSenseofStreamProcessing/4. Materialized Views
2017-06-11
MakingSenseofStreamProcessing/1. Replication
MakingSenseofStreamProcessing/Bringing the Unix Philosophy to the Twenty-First Century
MakingSenseofStreamProcessing/2. Secondary Indexes
MakingSenseofStreamProcessing/3. Caching
MakingSenseofStreamProcessing/How Databases Are Used
MakingSenseofStreamProcessing/Composability Requires a Uniform Interface
2017-03-25
MakingSenseofStreamProcessing/Unix Architecture versus Database Architecture
MakingSenseofStreamProcessing/Turning the Database Inside Out