11

ドメイン駆動設計を使用して開発されたブログ アプリケーションでは、'Post' エンティティに関連するタグ エンティティのコレクションがあります。

投稿の作成時 (UI からのオブジェクトの入力など) に、REST を介してサード パーティの API を呼び出し、投稿のコンテンツを取得し、関連付けのためにセマンティック タグ (リンク テキスト) を抽出します。

主な質問: これを設計する最良の方法は何ですか...

Post エンティティが PostServices.GetTags(Postcontent) などのドメイン サービスを呼び出してコンテンツを渡し、タグのリストを取得するように設計するのが最適ですか?

** PostServices.GetTags は、追加のラッパー クラスを介して REST API とインターフェイスします。

それとも、サードパーティの API をリポジトリとしてラップする必要がありますか?

関数 Post.GenerateTags() は、ドメイン エンティティ内に存在すべきではありませんか?

その他の質問:

1 : 私は、ドメイン エンティティがドメイン サービスと会話するのは良い習慣ではないことも読みました。これは本当ですか?

2 : ファクトリ作成メソッドを介して PostServices ドメイン サービスへの参照を取得してもよろしいですか。例えば..

IPostService PostService = ServiceUtil.GetPostService(); PostService.GetTags(Post.content) を返します。

3 : ドメイン サービスをサード パーティの API に結合することは許容されますか?

4 : ドメイン エンティティは、REST API を呼び出したアプリケーション層を介して受信したタグを処理する方法を単に知っている必要があります。

ゆっくりと DDD について理解を深めようとしていますが、この種のものを実装する方法の例を見つけることができないようです。

4

1 に答える 1

4

ブログアプリケーションでは、投稿はエンティティであり、タグは値オブジェクトです。タグにはアイデンティティがありません。あなたが持っている必要があります:

  • PostsRepository
  • 投稿(エンティティ)
  • タグ(値オブジェクト)

投稿にはタグのリストがあります。

質問:

1:ドメインエンティティがドメインサービスと会話するのは良い習慣ではないことも読みました。これは本当ですか?

はい、それは良い習慣ではありません。あなたのエンティティは、ドメインサービスと結合することを望んでいません。そうすると、後で再利用できなくなります。ドメインイベントを発生させることを検討しましたか。サービスドメインに、ドメインイベントを起動する何かを実行するように指示できます。

2.:ファクトリ作成メソッドを介してPostServicesドメインサービスへの参照を取得しても大丈夫ですか。例:IPostService PostService = ServiceUtil.GetPostService(); PostService.GetTags(Post.content);を返します。

はい、可能です。ファクトリメソッドは、抽象クラスまたはインターフェイスを返す可能性があります。これは、「実装ではなくインターフェイスへのコード」という優れたソフトウェア設計原則です。これを行うと、後で実装を変更できるようになり、クライアントコードを変更する必要がなくなります。

3:ドメインサービスをサードパーティのAPIに結合することは許容されますか?

これはお勧めしませんが、問題ありません。

申し訳ありませんが、質問4がわかりません。

このリンクを見てください。お役に立てば幸いです。

https://stackoverflow.com/questions/901462/ddd-where-is-it-most-appropriate-to-get-a-list-of-value-objects/901562#901562

于 2010-02-16T17:41:21.230 に答える