3

コンポーネントが互いの機能を使用し、ソフトな循環依存関係を持つ可能性があるコンポーネント ベースのシステムを考えてみましょう。ここでの「ソフトな依存関係」とは、依存コンポーネントが、利用可能な場合は他のサービスを使用するが、サービスがなくてもプロパティを機能できる場合です。あるコンポーネントが別のコンポーネントなしでは機能できない場合、システムには強い依存関係もありますが、それらは循環的ではありません。これは良い設計ですか、それともソフトであっても循環依存を避けるべきですか?

この質問は、C# ではプロジェクトがプロジェクト間で循環依存関係を持つことが許可されておらず、プロジェクトを使用してシステム内のコンポーネントを分離しているという事実から生じています。次に、これらはアセンブリにコンパイルされ、構成に応じて、アプリケーションによってそれらのサブセットが動的に読み込まれます。

PS この質問を建設的でないとマークする場合は、常に単一の客観的な答えがなく、議論が必要な設計上の質問をすることができるサイトを提案するコメントを追加してください。

更新:要求されたソフト依存関係の例: クライアント マネージャー コンポーネントは、オブジェクトの場所をクライアントに伝えるために、ロケーション コンポーネントのサービスを使用する必要があります (クライアントはオブジェクトの場所を知る必要があるため、これはハード依存関係です)。ただし、場所コンポーネントは、クライアント マネージャー コンポーネントのインターフェイスを使用してクライアントの API を拡張し、位置も設定できるようにする必要があります (これはソフト依存関係です)。サーバーはクライアントと通信する必要はありません。

4

1 に答える 1