[解決済み] なぜドメインエンティティをプレゼンテーション層から分離する必要があるのですか?
質問
ドメイン駆動設計の1つの部分は、あまり詳細がないように見えますが、どのように、そしてなぜドメインモデルをインターフェースから分離すべきかということです。私は、これが良い習慣であると同僚を説得しようとしていますが、あまりうまくいっていないようです...。
彼らはプレゼンテーション層とインターフェイス層の好きなところでドメインエンティティを使用しています。私が彼らに、ドメイン層をインターフェイス層から分離するためにディスプレイモデルまたはDTOを使用すべきだと主張すると、彼らはそのようなことをすることにビジネス価値を見いだせないと反論します。
そこで、私はこれを裏付けるために使用できるいくつかの具体的な理由を探しています。具体的には
-
なぜプレゼンテーション層でドメインオブジェクトを使用しない方がよいのでしょうか?
-
(答えが明白な「デカップリング」である場合、この文脈でなぜこれが重要なのかを説明してください)
- インターフェイスからドメインオブジェクトを分離するために、追加のオブジェクトまたはコンストラクトを使用する必要がありますか?
どのように解決するのですか?
端的に言えば、理由は実装とドリフトの 1 つです。 はい、プレゼンテーション層は、ビジネス オブジェクトを適切に表現できるようにするために、ビジネス オブジェクトについて知る必要があります。 そうです、当初は 2 種類のオブジェクトの実装の間に多くの重複があるように見えます。 問題は、時間が経つにつれて、双方に追加されるものが出てくることです。 プレゼンテーションが変化し、プレゼンテーション層のニーズが進化して、ビジネス層とは完全に独立したもの(例えば、色など)が含まれるようになります。 一方、ドメインオブジェクトは時間とともに変化し、インターフェイスから適切なデカップリングを行わないと、ビジネスオブジェクトに一見良さそうに見える変更を行うことによって、インターフェイス層を台無しにする危険性があります。
つまり、ビジネス オブジェクト レイヤーは、それと通信できる唯一の方法であるインターフェースを公開し、インターフェースに関する実装の詳細 (すなわちドメイン オブジェクト) は公開されません。 つまり、インターフェイス層とBO層の2カ所でドメインオブジェクトを実装しなければなりません。 しかし、この再実装は、最初は余分な作業のように見えるかもしれませんが、将来のある時点で膨大な作業を節約するデカップリングを強化するのに役立ちます。
関連
-
[解決済み] Abstract FactoryとFactoryのデザインパターンの違いは何ですか?
-
[解決済み】FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[クローズド]
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み] KotlinでBuilderパターンを実装するには?
-
[解決済み] Observerデザインパターンと "Listeners "の比較
-
[解決済み] リポジトリとサービスの違い?
-
[解決済み】デザインパターンを勉強するには?[クローズド]。
-
[解決済み] ServiceLocatorはアンチパターンか?
-
[解決済み] Hystrixが採用しているBulkhead Patternとは何ですか?
-
[解決済み] ファサード vs. メディエーター
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
-
[解決済み】ファサードデザインパターンとは何ですか?
-
[解決済み] コード内のスイッチをなくす方法【非公開
-
[解決済み] ブリッジパターンはどのようなときに使うのですか?Adapterパターンとどう違う?
-
[解決済み】デザインパターンを勉強するには?[クローズド]。
-
[解決済み] ユーティリティクラスは悪なのか?[クローズド]
-
[解決済み] リアクターパターン」の簡単な説明とその応用【終了しました
-
[解決済み] Springフレームワークで使われているデザインパターンとは?[クローズド]
-
[解決済み] コンフィギュレーション設定の問題に適用できるデザインパターンはどれか?