6

今日、プロジェクトを更新したところ、次の警告が表示されました。

非推奨: ServiceManagerAwareInterface は非推奨であり、ServiceManagerAwareInitializer と共にバージョン 3.0 で削除されます。クラス X を更新して実装を削除し、代わりにファクトリ経由で依存関係の注入を開始してください

これらの基本クラスを拡張する複数のクラスBaseを実装するいくつかのメインクラスがあります。ServiceManagerAwareInterface

では、これらのクラスごとに追加のファクトリ クラスを作成することをお勧めしますか? それとも、モジュールごとに1 つの AbstractFactoryを使用して、そこでクラスを開始する方がよいでしょうか?

AbstractFactory を使用した用量はパフォーマンスに影響しますか?

多くのクラスで 1 つ (または 2 つ) の共有依存関係を注入するためのベスト プラクティスは何ですか?

更新: @AlexP の回答を受け入れたとしても、依存関係スロー コンストラクターを提供することについて懸念があります。このシナリオを想像してみてください。いくつかのアクションを持つコントローラーがあります。たとえば、ActionA には ServiceZ が必要で、ActionB には ServiceY と ServiceX が必要であり、ServiceX も ServiceM と ServiceN に依存しています。今、ActionAを呼び出すたびに、これらすべてのサービスで開始されたコントローラーですが、ActionAはコントローラーに5つのサービスがロードされている1つのサービスしか必要としません....これは良い習慣ですか?これは正しい方法ですか?リクエストごとに、そのリクエスト中にまったく使用しないサービスが開始されるため、これはパフォーマンスが低下しませんか?

現在、各サービス/コントローラーが独自のニーズを処理し、必要なときにサービスをロードできるようにしています。

このようにして、使用しない複数のサービスを開始する必要がなくなり、それらを使用するためにサービスの依存関係を知る必要がなくなります。これがベストプラクティスとして受け入れられていないことはわかっていますが、コードはクリーンであり、パフォーマンスを向上させるために「ベストプラクティス」を犠牲にすることを好みます.

これに関する誰かの意見に感謝します。

4

1 に答える 1