11

DDD レイヤード アーキテクチャの依存関係について質問を受けました。リポジトリの実装がインフラストラクチャ レイヤーにある場合、エンティティはリポジトリの実装で参照されるため、インフラストラクチャ レイヤーがドメイン レイヤーに依存していることを意味します。

一方、インフラストラクチャ サービスがドメインで使用されている場合、ドメイン レイヤはインフラストラクチャ レイヤへの参照を持つことができます。

これは循環参照を作成しませんか?

4

2 に答える 2

1

はい、あなたの場合。そして、私は同じ質問をしています:)

これが私の説明です:

eric evans のアーキテクチャ図では、インフラストラクチャ レイヤーが特別なレイヤーのようです。インターフェイス、アプリケーション、ドメインを実装します。

ここに画像の説明を入力

これは一種のこじつけです.....

しかし一方で、インフラストラクチャ コンポーネントは通常、アダプター、トランスレーター、およびファサードで構成されているため、インフラストラクチャーを個別のアダプター モジュールに分割することもできます。

例えば、

1) MailManager を DomainService に注入すると、ドメインはメーリングに依存する可能性があります。2) 永続性はドメインに依存します (リポジトリの場合)。

しかし、メーリングと持続性を 2 つのモジュールに分離すると、相互に依存関係がなくなります。これにより、問題が軽減される可能性があると思います。

結局のところ、レイヤー化は目的ではなくコンポーネントを分離する方法です。

最後になりましたが、より説得力のある回答を期待しています:)

于 2013-09-15T06:13:22.563 に答える