問題タブ [anemic-domain-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
883 参照

design-patterns - 貧血ドメインモデルとアクティブレコードの違い

この回答に基づいて、貧血ドメインモデルの背後にある同じアイデアがアクティブな記録にあることがわかりました! アクティブ レコード パターン データベースのフィールドはドメイン プロパティと同じです (間違っている場合は訂正してください)。したがって、前述の回答に基づいて、貧血モデルでも同じです (データベース テーブルから自動的に生成するのは簡単です)。 2 つのアプローチの違いは何ですか。ありがとう

0 投票する
10 に答える
50369 参照

domain-model - リッチ vs 貧血ドメイン モデル

Anemic Domain Model よりも Rich Domain Model を使用する必要があるかどうかを判断し、2 つの良い例を探しています。

私は、サービス --> リポジトリ --> ストレージ層システムに裏打ちされた貧血ドメイン モデルを使用して Web アプリケーションを構築し、BL 検証にFluentValidationを使用し、すべての BL をサービス層に配置しています。

Eric Evan の DDD 本を読んだことがありますが、彼は (Fowler などと同様に) Anemic Domain Models はアンチパターンであると考えているようです。

だから私は本当にこの問題についていくつかの洞察を得たいと思っていました.

また、Rich Domain Model の良い (基本的な) 例と、それが提供する Anemic Domain Model に対する利点を本当に探しています。

0 投票する
1 に答える
135 参照

c# - 貧血ドメインからドメインドリブンへ

貧血ドメインが実際に何を意味するかについて、明確で単純な例を見つけようとしていました. 周りにはたくさんの理論があり、よく答えられた質問もたくさんあります。それでも、「貧血ドメイン」の意味が実際にどの程度まで進んでいるかについては、明確なイメージを得ることができませんでした. したがって、貧血ドメイン設計のダミーの実用的な例を見て、これをドメイン駆動型の設計にどのように進化させることができるかを尋ねるよりも簡単だと思います...

では、タイプTaskDataのデータ エンティティがあるとします。

また、計算された状態である「 ActualState 」と呼ばれる追加のプロパティが必要です。タスクに内部サブタスクがある場合、値は子に厳密に依存します。それ以外の場合、「ActualState 」は「 ExplicitState」と等しくなります。

このロジックを別のサービスクラス (「エンジン」と呼びます) に記述すると、次のようになります。

最初の質問は次のとおりです。

上記のコードは、 TaskStateCalculatorサービス/エンジンがドメイン レイヤーの一部であっても、貧弱なドメイン設計を反映していますか? はいの場合、それを回避するために、ロジックをTaskDataクラス内に移動する必要があります (そして、TaskDataTaskに名前変更します)。私は正しいですか?

2番目の質問は(実際にはそれらのチェーンです):

もっと困難な状況になったらどうしますか?Taskエンティティ内にComputeSomethingというプロパティが必要であり、このプロパティのロジックが Task のリポジトリ全体にアクセスする必要があるとします。この場合、TaskクラスはTaskRepositoryに依存します。これでよろしいでしょうか?EF はそのようなクラスのインスタンスをどのように構築しますか? 代替手段は何ですか?

0 投票する
2 に答える
1593 参照

entity - 貧血ドメイン モデルとエンティティの違い

私は DDD をしっかりと理解しようとしており、ドメイン駆動設計に関する Eric Evans の本と、Julie Lerman のブログを読んで、次のように説明しています。

Anemic Domain Model状態管理に焦点を当てたクラスを持つモデルとして。CRUDに適しています。

Entity追跡と永続化に使用される ID を持つ可変クラスとして。

確かに両方とも同じ目的で使用されていますか、それともスティックの端が完全に間違っていますか? 2つの違いは何ですか?貧血ドメイン モデルはデータベース スキーマを表すためによく使用されると読みましたが、エンティティでも同じではないでしょうか?

たとえば、table呼び出された Customer には次のものがあります。

私の理解では、anemic domain modelこれを表すには次のようになります。

私の過去の経験から、エンティティも一連のプロパティでこのように表されることが示唆されています。これはgetterEntity setterFramework ですか? 両方の概念 (エンティティと貧血ドメイン モデル) はmutable?

ありがとう、DS。

0 投票する
3 に答える
136 参照

c# - 完全な貧血 - このデータをモデルからどこに移動できますか?

それぞれ数百行の長さのレガシー SQL ステートメントが数十個与えられました。Models各 SQL は、共有プロジェクト内の独自の一意の POCO を持つコードにマップされます。

たとえば、SQLには、プロジェクトSelect Name, Birthday From Peopleに同等の POCO があります。Models

私の DAL には、SQL の POCO を表す単一の汎用 SQL ランナーがあります。<T>したがって、私のビジネスロジックは次のように呼び出すことができますGetSqlResult<BirthdayPerson>():

問題は、私のModelsライブラリがアプリケーション全体で使用されており、その HardcodedSql プロパティでアプリケーション全体に SQL を公開したくないことです。

これは私が使用しているアーキテクチャです:

スアメールのドメイン